IDictionary
Интерфейс IDictionary представляет коллекцию, в которой доступ к данным осуществляется по ключу – как в хэш-таблицах, описанных в предыдущей главе. Более того, класс хэш-таблиц в числе прочих реализует интерфейсы IDictionary, ICollection, Enumerable и ICloneable!
Хотя интерфейс IDictionary объявляется производным от Enumerable и переход к следующему элементу может осуществляться методом MoveNext, обычно такая возможность не используется – коллекции, реализующие IDictionary, ориентируются в первую очередь на обращение по ключу, а не на последовательный перебор элементов. По этой причине интерфейс IDictionary зависит от интерфейса IDictionaryEnumerator, который расширяет Enumerator и дополняет его тремя новыми свойствами:
- Entry: возвращает пару "ключ/значение" для текущего элемента словаря.
- Key: возвращает текущий ключ.
- Value: возвращает ссылку на текущее значение.
Примечание
В .NET Framework входит класс DictionaryBase. Определяя класс производным от DictionaryBase, вы получаете в свое распоряжение всю функциональность интерфейса IDictionary.
Члены класса IDictionary перечислены в табл. 5.4.
Примечание
Поскольку ключи в ассоциативных коллекциях должны быть уникальными, при реали-зации большинства методов необходимо сначала проверить, не был ли заданный ключ использован ранее. Свойство Keys возвращает объект, реализующий ICollection; уникальность ключа проверяется методом Contains интерфейса 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) (метод) | Удаляет элемент с заданным ключом |