public TKey Key;
public TValue Value;
В этих полях содержится ключ или значение соответствующего элемента коллекции. Как правило, структура KeyValuePairCTKey, TValue>
не используется непосредственно, поскольку средства класса DictionaryCTKey, TValue>
позволяют работать с ключами и значениями по отдельности. Но при перечислении коллекции типа Dictionary
, например, в цикле foreach
перечисляемыми объектами являются пары типа KeyValuePair
.
Все ключи в коллекции типа DictionaryCTKey, TValue>
должны быть уникальными, причем ключ не должен изменяться до тех пор, пока он служит в качестве ключа. В то же время значения не обязательно должны быть уникальными. К тому же объекты не хранятся в коллекции типа DictionaryCTKey, TValue>
в отсортированном порядке.
В приведенном ниже примере демонстрируется применение класса DictionaryCTKey, TValue>
// Продемонстрировать применение класса обобщенной
// коллекции DictionaryCTKey, TValueX
using System;
using System.Collections.Generic;
class GenDictionaryDemo {
static void Main() {
// Создать словарь для хранения имен и фамилий
// работников и их зарплаты.
Dictionary diet =
new Dictionary();
// Добавить элементы в коллекцию,
diet.Add("Батлер, Джон", 73000);
diet.Add("Шварц, Capa", 59000);
diet.Add("Пайк, Томас", 45000);
diet.Add("Фрэнк, Эд", 99000);
// Получить коллекцию ключей, т.е. фамилий и имен.
ICollection с = diet.Keys;
// Использовать ключи для получения значений, т.е. зарплаты,
foreach(string str in с)
Console.WriteLine ("{0}, зарплата: {1:C}", str, diet[str]);
}
}
Ниже приведен результат выполнения этой программы.
Батлер, Джон, зарплата: $73 000,00
Шварц, Capa, зарплата: $59 000,00
Пайк, Томас, зарплата: $45 000,00
Фрэнк, Эд, зарплата: $99 000,00
Класс SortedDictionary
В коллекции класса SortedDictionary
пары "ключ-значение" хранятся таким же образом, как и в коллекции класса Dictionary
, за исключением того, что они отсортированы по соответствующему ключу. В классе SortedDictionary
реализуются интерфейсы IDictionary, IDictionary, ICollection, ICollection>, IEnumerable
и IEnumerable>
. В классе SortedDictionary
предоставляются также следующие конструкторы.
public SortedDictionary()
public SortedDictionary(IDictionary dictionary)
public SortedDictionary(IComparer comparer)
public SortedDictionary(IDictionaryCTKey, TValue> dictionary,
IComparer comparer)
В первом конструкторе создается пустой словарь, во втором конструкторе — словарь с указанным количеством элементов dictionary. В третьем конструкторе допускается указывать с помощью параметра comparer типа IComparer
способ сравнения, используемый для сортировки, а в четвертом конструкторе — инициализировать словарь, помимо указания способа сравнения.
В классе SortedDictionary
определен ряд методов. Некоторые наиболее часто используемые методы этого класса сведены в табл. 25.18.
Таблица 25.18. Наиболее часто используемые методы, определенные в классе SortedDictionaryCTKey, TValue>
Метод - Описание
public void Add (TKey key, TValue value) -
Добавляет в словарь пару “ключ-значение", определяемую параметрами key и value. Если ключ key уже находится в словаре, то его значение не изменяется, и генерируется исключение ArgumentException
public bool ContainsKey (TKey кеу) - Возвращает логическое значение true,если вызывающий словарь содержит объект key в качестве ключа; в противном случае — логическое значение false
public bool ContainsValue(TValue value) public bool Remove(TKey key) - Возвращает логическое значение true,если вызывающий словарь содержит значение value; в противном случае — логическое значение falseУдаляет ключ key из словаря. При удачном исходе операции возвращается логическое значение true,а если ключ key отсутствует в словаре — логическое значение false
Кроме того, в классе SortedDictionary определяются собственные свойства, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Эти свойства приведены ниже.
Свойство - Описание
public Icomparer Comparer { get; } -Получает метод сравнения для вызывающего словаря
Читать дальше