Благодаря тому что в интерфейсе
ICollectionреализуется интерфейсIEnumerable,в нем поддерживаются также методы расширения, определенные в классеEnumerable.Несмотря на то что методы расширения предназначены главным образом для поддержки LINQ, им можно найти и другое применение, в том числе и в коллекциях.Интерфейс IList
В интерфейсе
IListопределяется такое поведение обобщенной коллекции, которое позволяет осуществлять доступ к ее элементам по индексу с отсчетом от нуля. Этот интерфейс наследует от интерфейсовIEnumerable, IEnumerableиICollectionи поэтому является обобщенным вариантом необобщенного интерфейсаIList.Методы, определенные в интерфейсеIList,перечислены в табл. 25.11. В двух из этих методов предусматривается модификация коллекции. Если же коллекция доступна только для чтения или имеет фиксированный размер, то методыInsert () иRemoveAt ()генерируют исключениеNotSupportedException.Таблица 25.11. Методы, определенные в интерфейсе IList
Метод
Описание
int IndexOf(Т
item)void Insert(int
index,T
item)void RemoveAt(int
index)
Возвращает индекс первого вхождения элемента item
в вызывающей коллекции. Если элемент item не обнаружен, то метод возвращает значение -1 Вставляет в вызывающую коллекцию элемент item по индексу indexУдаляет из вызывающей коллекции элемент, расположенный по указанному индексу index
Кроме того, в интерфейсе
IListопределяется индексаторТ this[int
index]{ get; set; }который устанавливает или возвращает значение элемента коллекции по указанному индексу
index.Интерфейс IDictionary
В интерфейсе
IDictionaryопределяется такое поведение обобщенной коллекции, которое позволяет преобразовать уникальные ключи в соответствующие значения. Это означает, что в данном интерфейсе определяется коллекция, в которой хранятся пары "ключ-значение". ИнтерфейсIDictionaryнаследует от интерфейсовIEnumerable, IEnumerable>иICollection>и поэтому является обобщенным вариантом необобщенного интерфейсаIDictionary.Методы, объявленные в интерфейсеIDictionary,приведены в табл. 25.12. Все эти методы генерируют исключениеArgumentNullExceptionпри попытке указать пустой ключ.Таблица 25.12. Методы, определенные в интерфейсе IDictionaryCTKey, TValue>
Метод
Описание
void Add(TKey
key, TValuevalue\bool Contains(TKey
key)bool Remove(TKey
key)bool TryGetValue(TKey
key, out TValuevalue)
Добавляет в вызывающую коллекцию пару “ключ-значение”, определяемую параметрами key
и value. Генерирует исключение ArgumentException, если ключ key уже находится в коллекции Возвращает логическое значение true, если вызывающая коллекция содержит элемент key в качестве ключа, а иначе — логическое значение false Удаляет из коллекции элемент, ключ которого равен значению keyПредпринимает попытку извлечь значение из коллекции по указанному ключу key
и присвоить это значение переменной value. При удачном исходе операции возвращается логическое значение true, а иначе — логическое значение false. Если ключ key не найден, переменной value присваивается значение, выбираемое по умолчанию
Кроме того, в интерфейсе
IDictionaryопределены перечисленные ниже свойства.
Свойство
Описание