- •1. Введение в ооп
- •1.1. Этапы развития технологий программирования
- •1.2. Введение в ооп
- •2. Понятие класса и объекта класса. Инкапсуляция в c#
- •2.1. Понятие класса и объекта класса. Создание объектов. Данные и методы класса
- •2.2. Передача параметров в методы класса
- •2.3. Конструкторы и деструкторы
- •2.4. Инкапсуляция в c#
- •3. Индексаторы и свойства
- •3.1. Индексаторы
- •3.2. Свойства
- •4. Наследование в c#
- •5. Полиморфизм в c#. Интерфейсы
- •5.1. Виртуальные методы и их переопределение
- •5.2. Применение абстрактных классов
- •5.3. Интерфейсы
- •6. Система типов языка c#
- •7. Структуры и перечисления
- •7.2. Тип структур
- •8. Операторы и управляющие конструкции языка c#
- •8.1. Арифметические операторы
- •8.2. Операторы отношения и логические операторы
- •8.3. Оператор присваивания
- •8.4. Оператор ?
- •8.5. Управляющие операторы
- •9. Массивы и строки
- •9.1. Массивы в c#
- •9.1.1. Одномерные массивы
- •9.1.2. Многомерные массивы
- •9.1.3. Ступенчатые массивы
- •9.2. Строки
- •9.2.1. Постоянство строк
- •10. Платформа .Net. Основные понятия и принципы работы
- •11. Пространства имен. Сборки
- •11.1. Пространства имён
- •11.2. Сборки
- •12. Время жизни переменных и область видимости переменных. Оператор new и сборка мусора
- •12.2. Финализация объектов
- •12.3. Создание высвобождаемых объектов
- •13. Исключения. Генерация и обработка
- •13.1. Основы обработки исключительных ситуаций
- •13.2. Применение пары ключевых слов try и catch
- •13.3. Генерирование исключений вручную
- •13.4. Использование блока finally
- •13.5. Класс Exception и получение производных классов
- •13.6. Ключевые слова checked и unchecked
- •14. Обобщения (шаблоны) и их применение в языке c#
- •15. Основные классы коллекций объектов
- •15.1. Интерфейсы необобщенных коллекций
- •15.1.1. Интерфейс iCollection
- •15.1.2. Интерфейс iList
- •15.1.3. Интерфейс iDictionary
- •16. Использование linq для работы с коллекциями
- •16.1. Простой запрос
- •16.2. Общая форма запроса
- •16.3. Сортировка результатов запроса с помощью оператора orderby
- •16.4 Операторы group, into, let и join
- •16.5. Методы запроса
- •16.6. Формирование запроса с помощью методов запроса
- •Заключение
- •Оглавление
- •1. Введение в ооп 3
- •1.1. Этапы развития технологий программирования 3
- •1.2. Введение в ооп 11
- •394026 Воронеж, Московский просп., 14
15.1.3. Интерфейс iDictionary
В интерфейсе IDictionary определяется такое поведение необобщенной коллекции, которое позволяет преобразовать уникальные ключи в соответствующие значения. Ключ представляет собой объект, с помощью которого значение извлекается впоследствии. Следовательно, в коллекции, реализующей интерфейс IDictionary, хранятся пары "ключ-значение". Как только подобная пара будет сохранена, ее можно извлечь с помощью ключа. Интерфейс IDictionary наследует от интерфейсов ICollection и IEnumerable. Некоторые из методов, объявленных в IDictionary, генерируют исключение ArgumentNullException при попытке указать пустой ключ, поскольку пустые ключи не допускаются.
Методы, определенные в IDictionary:
1) void Add(object key, object value) - добавляет в вызывающую коллекцию пару "ключ-значение", определяемую параметрами key и value.
2) void Clear() - удаляет все пары "ключ-значение" из вызывающей коллекции.
3) bool Contains(object key) - возвращает логическое значение true, если вызывающая коллекция содержит объект key в качестве ключа, в противном случае — логическое значение false.
4) iDictionaryEnumerator GetEnumerator() - возвращает перечислитель для вызывающей коллекции.
5) void Remove (object key) - удаляет из коллекции элемент, ключ которого равен значению параметра key.
Свойства, определенные в IDictionary:
1) bool isFixedSize { get; } - принимает логическое значение true, если словарь имеет фиксированный размер;
2) bool isReadOnly{ get; } - принимает логическое значение true, если словарь доступен только для чтения;
3) ICollection Keys { get; } - получает коллекцию ключей;
4) ICollection Values { get; } - получает коллекцию значений.
Кроме того, в интерфейсе IDictionary определяется следующий индексатор.
object this[object key] { get; set; }
Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в качестве индекса в данном случае служит ключ элемента, а не собственно индекс.
Пример:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
public class MainClass
{
public static void Main()
{
IDictionary<string, float> salaryMap = new
Dictionary<string, float>();
salaryMap.Add("S", 60.5);
salaryMap.Add("W", 10.0);
salaryMap.Add("J", 30.99);
Console.WriteLine(salaryMap.ContainsKey("S"));
Console.WriteLine(salaryMap.ContainsKey("T"));
}
}
16. Использование linq для работы с коллекциями
Аббревиатура LINQ означает Language-Integrated Query, т.е. язык интегрированных запросов. Это понятие охватывает ряд средств, позволяющих извлекать информацию из источника данных. Извлечение данных составляет важную часть многих программ. Например, программа может получать информацию из списка заказчиков, искать информацию в каталоге продукции или получать доступ к учетному документу, заведенному на работника. Как правило, такая информация хранится в базе данных, существующей отдельно от приложения. В прошлом для взаимодействия с такой базой данных приходилось формировать запросы на языке структурированных запросов (SQL). А для доступа к другим источникам данных, например в формате XML, требовался отдельный подход.
LINQ дополняет С# средствами, позволяющими формировать запросы для любого LINQ-совместимого источника данных. При этом синтаксис, используемый для формирования запросов, остается неизменным, независимо от типа источника данных. Возможности формировать запросы отныне полностью интегрированы в язык С#.
В основу LINQ положено понятие запроса, в котором определяется информация, получаемая из источника данных.
Как только запрос будет сформирован, его можно выполнить. Это делается, в частности, в цикле foreach. В результате выполнения запроса выводятся его результаты. Поэтому использование запроса может быть разделено на две главные стадии. На первой стадии запрос формируется, а на второй — выполняется. Таким образом, при формировании запроса определяется, что именно следует извлечь из источника данных. А при выполнении запроса выводятся конкретные результаты.
Для обращения к источнику данных по запросу, сформированному средствами LINQ, в этом источнике должен быть реализован интерфейс IEnumerable. Он имеет две формы: обобщенную и необобщенную. Как правило, работать с источником данных легче, если в нем реализуется обобщенная форма IEnumerable<T>, где Т обозначает обобщенный тип перечисляемых данных. Этот интерфейс объявляется в пространстве имен System.Collections.Generic. Класс, в котором реализуется форма интерфейса IEnumerable<T>, поддерживает перечисление, а это означает, что его содержимое может быть получено по очереди или в определенном порядке. Форма интерфейса IEnumerable<T> поддерживается всеми массивами в С#. Поэтому на примере массивов можно наглядно продемонстрировать основные принципы работы LINQ.