Благодаря тому что в интерфейсеICollectionреализуется интерфейсIEnumerable,в нем поддерживаются также методы расширения, определенные в классеEnumerable.Несмотря на то что методы расширения предназначены главным образом для поддержки LINQ, им можно найти и другое применение, в том числе и в коллекциях.

Интерфейс IList

В интерфейсеIListопределяется такое поведение обобщенной коллекции, которое позволяет осуществлять доступ к ее элементам по индексу с отсчетом от нуля. Этот интерфейс наследует от интерфейсовIEnumerable, IEnumerableиICollectionи поэтому является обобщенным вариантом необобщенного интерфейсаIList.Методы, определенные в интерфейсеIList,перечислены в табл. 25.11. В двух из этих методов предусматривается модификация коллекции. Если же коллекция доступна только для чтения или имеет фиксированный размер, то методыInsert () иRemoveAt ()генерируют исключениеNotSupportedException.

Таблица 25.11. Методы, определенные в интерфейсе IList

Метод

Описание

int IndexOf(Тitem)

void Insert(intindex,

Titem)

void RemoveAt(intindex)

Возвращает индекс первого вхождения элемента item в вызывающей коллекции. Если элемент item не обнаружен, то метод возвращает значение -1 Вставляет в вызывающую коллекцию элемент item по индексу index

Удаляет из вызывающей коллекции элемент, расположенный по указанному индексу index

Кроме того, в интерфейсеIListопределяется индексатор

Т this[intindex]{ get; set; }

который устанавливает или возвращает значение элемента коллекции по указанному индексуindex.

Интерфейс IDictionary

В интерфейсеIDictionaryопределяется такое поведение обобщенной коллекции, которое позволяет преобразовать уникальные ключи в соответствующие значения. Это означает, что в данном интерфейсе определяется коллекция, в которой хранятся пары "ключ-значение". ИнтерфейсIDictionaryнаследует от интерфейсовIEnumerable, IEnumerable>иICollection>и поэтому является обобщенным вариантом необобщенного интерфейсаIDictionary.Методы, объявленные в интерфейсеIDictionary,приведены в табл. 25.12. Все эти методы генерируют исключениеArgumentNullExceptionпри попытке указать пустой ключ.

Таблица 25.12. Методы, определенные в интерфейсе IDictionaryCTKey, TValue>

Метод

Описание

void Add(TKeykey, TValuevalue\

bool Contains(TKeykey)

bool Remove(TKeykey)

bool TryGetValue(TKeykey, out TValuevalue)

Добавляет в вызывающую коллекцию пару “ключ-значение”, определяемую параметрами key и value. Генерирует исключение ArgumentException, если ключ key уже находится в коллекции Возвращает логическое значение true, если вызывающая коллекция содержит элемент key в качестве ключа, а иначе — логическое значение false Удаляет из коллекции элемент, ключ которого равен значению key

Предпринимает попытку извлечь значение из коллекции по указанному ключу key и присвоить это значение переменной value. При удачном исходе операции возвращается логическое значение true, а иначе — логическое значение false. Если ключ key не найден, переменной value присваивается значение, выбираемое по умолчанию

Кроме того, в интерфейсеIDictionaryопределены перечисленные ниже свойства.

Свойство

Описание

Перейти на страницу:

Похожие книги