В интерфейсе IDictionary
IDictionary
, хранятся пары "ключ-значение". Как только подобная пара будет сохранена, ее можно извлечь с помощью ключа. Интерфейс IDictionary
наследует от интерфейсов ICollection
и IEnumerable
. Методы, объявленные в интерфейсе IDictionary
, сведены в табл. 25.3. Некоторые из них генерируют исключение ArgumentNullException при попытке указать пустой ключ, поскольку пустые ключи не допускаются.Таблица 25.3. Методы, определенные в интерфейсе IDictionary
Метод -
Описаниеvoid Add(object
void Clear() -
Удаляет все пары “ключ-значение” из вызывающей коллекцииbool Contains(object
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 key] { get; set; }
Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в качестве индекса в данном случае служит ключ элемента, а не собственно индекс.
Интерфейс IEnumerable
IEnumerable
реализуется во всех классах необобщенных коллекций, поскольку он наследуется интерфейсом ICollection
. Ниже приведен единственный метод GetEnumerator()
, определяемый в интерфейсе IEnumerable
.IEnumerator GetEnumerator()
Он возвращает коллекцию. Благодаря реализации интерфейса IEnumerable
foreach
.В интерфейсе IEnumerator
GetEnumerator()
возвращает объект типа IDictionaryEnumerator
, а не типа IEnumerator
. Интерфейс IDictionaryEnumerator
наследует от интерфейса IEnumerator
и вводит дополнительные функции, упрощающие перечисление словарей.В интерфейсе IEnumerator
MoveNext()
и Reset()
и свойство Current
. Способы их применения подробнее описываются далее в этой главе. А до тех пор следует отметить, что свойство Current
содержит элемент, получаемый в текущий момент. Метод MoveNext()
осуществляет переход к следующему элементу коллекции, а метод Reset()
возобновляет перечисление с самого начала.