Кроме того, в классеSortedDictionaryопределяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.
Свойство
Описание
public Icomparer Comparer { get; ]
public SortedDictionaryCTKey, TValue>. KeyCollection Keys { get; } public SortedDictionary. ValueCollection Values { get; }
\ Получает метод сравнения для вызывающего словаря Получает коллекцию ключей
Получает коллекцию значений
Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойствKeysиValues.В коллекциях типаSortedDictionary.KeyCollectionи SortedDictionary. ValueCollectionреализуются как обобщенные, так и необобщенные формы интерфейсовICollectionиIEnumerable.
И наконец, в классеSortedDictionaryреализуется приведенный ниже индексатор, определенный в интерфейсеIDictionary
public TValue this[TKeykey] {get; set; }
Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Но в данном случае в качестве индекса служит ключ элемента, а не сам индекс.
При перечислении коллекции типаSortedDictionaryиз нее возвращаются пары "ключ-значение" в форме структурыKeyValuePairНапомним, что в этой структуре определяются два следующих поля.
public TKey Key; public TValue Value;
В этих полях содержится ключ или значение соответствующего элемента коллекции. Как правило, структураKeyValuePairне используется непосредственно, поскольку средства классаSortedDictionaryпозволяют работать с ключами и значениями по отдельности. Но при перечислении коллекции типаSortedDictionary,например в циклеforeach,перечисляемыми объектами являются пары типаKeyValuePair.
Все ключи в коллекции типаSortedDictionaryдолжны быть уникальными, причем ключ не должен изменяться до тех пор, пока он служит в качестве ключа. В то же время значения не обязательно должны быть уникальными.
В приведенном ниже примере демонстрируется применение классаSortedDictionaryЭто измененный вариант предыдущего примера, демонстрировавшего применение классаDictionaryВ данном варианте база данных работников отсортирована по фамилии и имени работника, которые служат в качестве ключа.
// Продемонстрировать применение класса обобщенной // коллекции SortedDictionary
using System;
using System.Collections.Generic;
class GenSortedDictionaryDemo { static void Main() {
// Создать словарь для хранения имен и фамилий // работников и их зарплаты.
SortedDictionary diet =
new SortedDictionary();