IDictionary
Интерфейс IDictionary представляет коллекцию, в которой доступ к данным осуществляется по ключу — как в хэш-таблицах, описанных в предыдущей главе. Более того, класс хэш-таблиц в числе прочих реализует интерфейсы IDictionary, ICollection, Enumerable и ICloneable!
Хотя интерфейс IDictionary объявляется производным от Enumerable и переход к следующему элементу может осуществляться методом MoveNext, обычно такая возможность не используется — коллекции, реализующие IDictionary, ориентируются в первую очередь на обращение по ключу, а не на последовательный перебор элементов. По этой причине интерфейс IDictionary зависит от интерфейса IDic-tionaryEnumerator, который расширяет Enumerator и дополняет его тремя новыми свойствами:
В .NET Framework входит класс DictionaryBase. Определяя класс производным от DictionaryBase, вы получаете в свое распоряжение всю функциональность интерфейса IDictionary.
Члены класса IDictionary перечислены в табл. 5.4.
Поскольку ключи в ассоциативных коллекциях должны быть уникальными, при реали-зации большинства методов необходимо сначала проверить, не был ли заданный ключ использован ранее. Свойство Keys возвращает объект, реализующий ICollection; уникальность ключа проверяется методом,Соп1а1п5 интерфейса ICollection.
Таблица 5.4. Члены интерфейса IDictionary
Метод/свойство |
|
Описание | |
IsFixedSize (свойство) |
Логическое свойство. Показывает, имеет ли коллекция фиксированный размер | ||
IsReadOnly (свойство) |
Логическое свойство. Показывает, доступна ли коллекция только для чтения | ||
Item (свойство) |
Свойство доступно для чтения и записи. Используется для получения и присваивания значения объекта с заданным индексом | ||
Keys (свойство) |
Возвращает объект, реализующий интерфейс ICollection и содержащий все ключи ассоциативной коллекции | ||
Values (свойство) |
Возвращает объект, реализующий интерфейс ICollection и содержащий все значения ассоциативной коллекции | ||
Add(ByVal key As Object, ByVal value As Object) (метод) |
Добавляет объект с заданным ключом (ключ должен быть уникальным) | ||
Clear (метод) |
Удаляет все элементы из ассоциативной коллекции | ||
Contains (ByVal key As Object) As Boolean (метод) |
Ищет значение с заданным ключом | ||
GetEnumerator (метод) |
Возвращает объект IDictionaryEnumerator для работы с ключами и значениями | ||
Remove(ByVal key As Object) (метод) |
Удаляет элемент с заданным ключом |