Ответ
Dictionary<TKey, TValue> — это универсальная коллекция пар "ключ-значение", которая обеспечивает очень быстрый поиск (в среднем O(1)) за счет использования хэш-таблицы.
Ключевые характеристики:
- Уникальность ключей: Каждый ключ в словаре должен быть уникальным. Попытка добавить дубликат вызовет
ArgumentException. - Производительность: Операции поиска, вставки и удаления выполняются за константное время в среднем случае.
- Порядок: В классическом
Dictionaryпорядок элементов не гарантирован. Если порядок важен, используйтеSortedDictionary<TKey, TValue>илиOrderedDictionary. - Ключи и null: Ключи ссылочного типа не могут быть
null. Значения могут бытьnull.
Практическое использование:
// Создание и инициализация
var countryCapitals = new Dictionary<string, string>
{
["Россия"] = "Москва",
["Германия"] = "Берлин"
};
// Безопасное добавление
countryCapitals.TryAdd("Франция", "Париж");
// Безопасное получение значения (предпочтительный способ)
if (countryCapitals.TryGetValue("Россия", out string capital))
{
Console.WriteLine(capital); // Москва
}
// Перебор элементов
foreach (KeyValuePair<string, string> kvp in countryCapitals)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
Важные нюансы:
- Для пользовательских типов, используемых в качестве ключа, обязательно корректно переопределите методы
GetHashCode()иEquals(). Несоблюдение этого правила приведет к некорректной работе словаря. - При интенсивных операциях вставки/удаления может происходить рехеширование, что временно снижает производительность. Если размер коллекции известен заранее, укажите его в конструкторе:
new Dictionary<int, string>(capacity: 1000).