Sobes.tech
Junior

Какво е речник (Dictionary) в C#?

sobes.tech AI

Отговор от AI

Дефиницията на Dictionary в C# е колекция, която съхранява двойки "ключ-стойност", където всеки ключ е уникален и се използва за бърз достъп до съответната стойност. Реализира интерфейсите IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Основава се на хеш таблица.

Основни характеристики:

  • Ненаредена: Поредността на елементите в речника не е гарантирана и може да се променя при добавяне/премахване.
  • Производителност: Операциите добавяне, премахване и търсене по ключ имат средна сложност O(1) (в идеалния случай, без колизии на хешове) и O(n) в най-лошия случай.
  • Уникалност на ключовете: Всеки ключ трябва да е уникален в речника. Опитът за добавяне на елемент с съществуващ ключ ще доведе до изключение.

Пример за използване:

// Създаване на речник
Dictionary<string, int> ученици = new Dictionary<string, int>();

// Добавяне на елементи
ученици.Add("Ivanov", 5);
ученици["Petrov"] = 4; // Алтернативен начин за добавяне/актуализиране

// Проверка дали ключ съществува
if (ученици.ContainsKey("Ivanov"))
{
    // Получаване на стойността по ключ
    int оценка = ученици["Ivanov"]; // оценка == 5
}

// Обхождане на елементите
foreach (KeyValuePair<string, int> ученик in ученици)
{
    // ученик.Key - ключ, ученик.Value - стойност
    Console.WriteLine($"{ученик.Key}: {ученик.Value}");
}

// Премахване на елемент
ученици.Remove("Petrov");

Сравнение с други колекции:

Колекция Основна цел Достъп чрез индекс Достъп чрез ключ Уникалност на ключовете Подредба
List<T> Последователност от елементи Да Не Не Да
HashSet<T> Уникален набор от елементи Не Не Да Не
Dictionary<TKey, TValue> Пара от ключ-стойност за бързо търсене Не Да Да Не