В интерфейсе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определены перечисленные ниже свойства.
Свойство
Описание
ICollection Keys { get; } Подучает коллекцию ключей ICollection Values { get; } Получает коллекцию значений
Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойствKeysиValues.
И наконец, в интерфейсеIDictionaryопределяется следующий индексатор.
TValue this[TKeykey] { get; set; }