В интерфейсеIDictionaryопределяется такое поведение необобщенной коллекции, которое позволяет преобразовать уникальные ключи в соответствующие значения. Ключ представляет собой объект, с помощью которого значение извлекается впоследствии. Следовательно, в коллекции, реализующей интерфейсIDictionary,хранятся пары "ключ-значение". Как только подобная пара будет сохранена, ее можно извлечь с помощью ключа. ИнтерфейсIDictionaryнаследует от интерфейсовICollectionиIEnumerable.Методы, объявленные в интерфейсеIDictionary,сведены в табл. 25.3. Некоторые из них генерируют исключениеArgumentNullExceptionпри попытке указать пустой ключ, поскольку пустые ключи не допускаются.
Таблица 25.3. Методы, определенные в интерфейсе IDictionary
Метод
Описание
void Add(object
Добавляет в вызывающую коллекцию пару “ключ-
object
значение", определяемую параметрами
void Clear
Удаляет все пары “ключ-значение” из вызывающей коллекции
bool Contains(object
Возвращает логическое значение true, если вызывающая коллекция содержит объект
IDictionaryEnumerator
Возвращает перечислитель для вызывающей коллек
GetEnumerator
ции
void Remove(object
Удаляет из коллекции элемент, ключ которого равен значению параметра
Длядобавления пары "ключ-значение" в коллекцию типаIDictionaryслужит методAdd. Обратите внимание на то, что ключ и его значение указываются отдельно. А для удаления элемента из коллекции следует указать ключ этого объекта при вызове методаRemove. И для опорожнения коллекции вызывается методClear .
Для того чтобы выяснить, содержит ли коллекция конкретный объект, вызывается методContains с указанным ключом искомого элемента. С помощью методаGetEnumerator получается перечислитель, совместимый с коллекцией типаIDictionary.Этот перечислитель оперирует парами "ключ-значение".
В интерфейсеIDictionaryопределяются перечисленные ниже свойства.
Свойство
Назначение
bool IsFixedSize
{ get; }
Принимает логическое значение true, если словарь имеет фиксированный размер
bool IsReadOnly {
get; }
Принимает логическое значение true, если словарь доступен только для чтения
ICollection Keys
{ get; }
Получает коллекцию ключей
ICollection Values
{ get; }
Получает коллекцию значений
Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны в отдельных списках с помощью свойствKeysиValues.
Кроме того, в интерфейсеIDictionaryопределяется следующий индексатор.
object this[object
Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в качестве индекса в данном случае служит ключ элемента, а не собственно индекс.
Интерфейсы IEnumerable, IEnumerator и IDictionaryEnumerator