В классеHashtableопределяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса приведены в табл. 25.5. В частности, для того чтобы определить, содержится ли ключ в коллекции типаHashtable,вызывается методContains Key. А для того чтобы выяснить, хранится ли в такой коллекции конкретное значение, вызывается методContainsValue. Для перечисления содержимого коллекции типаHashtableслужит методGetEnumerator, возвращающий объект типаIDictionaryEnumerator.Напомним, чтоIDictionaryEnumerator— это перечислитель, используемый для перечисления содержимого коллекции, в которой хранятся пары "ключ-значение".
Таблица 25.5. Наиболее часто используемые методы, определенные в классе Hashtable
Метод
Описание
public virtual bool ContainsKey(object
public virtual bool ContainsValue(object
public virtual IDictionaryEnumerator GetEnumerator public static Hashtable Synchronized(Hashtable
Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится ключ
false
Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится значение
Возвращает для вызывающей коллекции типа Hashtable перечислитель типа IDictionaryEnumerator Возвращает синхронизированный вариант коллекции типа Hashtable, передаваемой в качестве параметра
В классеHashtableдоступны также открытые свойства, определенные в тех интерфейсах, которые в нем реализуются. Особая роль принадлежит двум свойствам,KeysиValues,поскольку с их помощью можно получить ключи или значения из коллекции типаHashtable.Эти свойства определяются в интерфейсеIDictionaryследующим образом.
public virtual ICollection Keys { get; } public virtual ICollection Values { get; }
В классеHashtableне поддерживаются упорядоченные коллекции, и поэтому ключи или значения получаются из коллекции в произвольном порядке. Кроме того, в классеHashtableимеется защищенное свойствоEqualityComparer.А два других свойства,hepиcomparer,считаются устаревшими.
Пары "ключ-значение" сохраняются в коллекции типаHashtableв форме структуры типаDictionaryEntry,но чаще всего это делается без прямого вмешательства со стороны пользователя, поскольку свойства и методы оперируют ключами и значениями по отдельности. Если, например, в коллекцию типаHashtableдобавляется элемент, то для этой цели вызывается методAdd , принимающий два аргумента: ключ и значение.