ас використовується для генерації хеш-кодів і порівняння ключів. [3]
Клас Dictionary lt; TKey, TValue gt;
У класі Dictionary lt; TKey, TValue gt; реалізуються інтерфейси IDictionary, IDictionary lt; TKey, TValue gt ;, ICollection, ICollection lt; KeyValue Pair lt; TKey, TValue gt; gt ;, IEnumerable, IEnumerable lt; KeyValuePair lt; TKey, TValue gt; gt ;, ISerializable і IDeserializationCallback. У двох останніх інтерфейсах підтримується сериализация списку. Словники мають динамічний характер, розширюючись в міру необхідності. [2]
У класі Dictionary lt; TKey, TValue gt; надається чимало конструкторів. Нижче перераховані найбільш часто використовувані з них:
Dictionary () Dictionary (IDictionary lt; TKey, TValue gt; dictionary)
public Dictionary (int capacity)
У першому конструкторі створюється порожній словник з вибираною за замовчуванням первісної ємністю. У другому конструкторі створюється словник із зазначеною кількістю елементів dictionary. А в третьому конструкторі за допомогою параметра capacity вказується ємність колекції, створюваної у вигляді словника. Якщо розмір словника наперед відомий, то, вказавши ємність створюваної колекції, можна виключити зміна розміру словника під час виконання, що, як правило, вимагає додаткових витрат обчислювальних ресурсів. [2]
У класі Dictionary lt; TKey, TValue gt; визначається також ряд методів: ()
Додає в словник пару ключ-значення raquo ;, що визначається параметрами key і value. Якщо ключ key вже знаходиться в словнику, то його значення не змінюється, і генерується виключення ArgumentException ()
Повертає логічне значення true, якщо викликає словник містить об'єкт key в якості ключа; а інакше - логічне значення false ()
Повертає логічне значення true, якщо викликає словник містить значення value; в іншому випадку - логічне значення false ()
Видаляє ключ key зі словника. При вдалому результаті операції повертається логічне значення true, а якщо ключ key немає у словнику - логічне значення false. [2]
Крім того, в класі Dictionary lt; TKey, TValue gt; визначаються власні властивості, крім тих, що вже оголошені в інтерфейсах, які в ньому реалізуються. Ці властивості приведені нижче, в таблиці 4. [5]
Таблиця 4 - Власні властивості класу Dictionary lt; TKey, TValue gt;
НазваніеОпісаніеComparerПолучает метод порівняння для викликає словаряKeysПолучает колекцію ключейValuesПолучает колекцію значень
Слід мати на увазі, що ключі і значення, що містяться в колекції, доступні окремими списками за допомогою властивостей Keys і Values. У колекціях типу Dictionary lt; TKey, TValue gt; .KeyCollection і Dictionary lt; TKey, TValue gt; .ValueCollection реалізуються як узагальнені, так і неузагальнених форми інтерфейсів ICollection і IEnumerable.
І нарешті, в класі Dictionary lt; TKey, TValue gt; реалізується наведений нижче індексатор, визначений в інтерфейсі IDictionary lt; TKey, TValue gt;
TValue this [TKey key] {get; set; }
Цей індексатор служить для отримання і установки значення елемента колекції, а також для додавання в колекцію нового елемента. Але в якості індексу в даному випадку служить ключ елемента, а не сам індекс. При перерахуванні колекції типу Dictionary lt; TKey, TValue gt; з неї повертаються пари ключ-значення у формі структури KeyValuePair lt; TKey, TValue gt ;. Нагадаємо, що в цій структурі визначаються два поля. [4]
TKey Key; TValue Value;
У цих полях міститься ключ або значення відповідного елемента колекції. Як правило, структура KeyValuePair lt; TKey, TValue gt; не використовується безпосередньо, оскільки кошти класу Dictionary lt; TKey, TValue gt; дозволяють працювати з ключами і значеннями окремо. Але при перерахуванні колекції типу Dictionary lt; TKey, TValue gt ;, наприклад, у циклі foreach перераховуються об'єктами є пари типу KeyValuePair.
Класи HashSet lt; T gt; і SortedSet lt; T gt;
Клас SortedSet lt; T gt; зручний тим, що при вставці або видаленні елементів він автоматично забезпечує сортування елементів у наборі. Клас SortedSet lt; T gt; знадобиться інформувати про те, як повинні сортуватися об'єкти, за рахунок передачі його конструктору аргументу - об'єкта, що реалізує узагальнений інтерфейс IComparer lt; T gt;.
Колекція, що містить тільки відрізняються елементи, називається безліччю (set). У складі .NET 4 є два безлічі ...