Junior
126
questionbank
Что такое словарь (Dictionary) в C#?
Ответ от нейросети
sobes.tech AI
Словарь (Dictionary) в C# — это коллекция, хранящая пары "ключ-значение", где каждый ключ уникален и используется для быстрого доступа к соответствующему значению. Реализует интерфейсы IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Основан на хеш-таблице.
Основные характеристики:
- Неупорядоченность: Порядок элементов в словаре не гарантируется и может меняться при добавлении/удалении.
- Производительность: Операции добавления, удаления и поиска по ключу имеют среднюю сложность O(1) (в идеальном случае, без хеш-коллизий) и O(n) в наихудшем.
- Уникальность ключей: Каждый ключ должен быть уникальным в словаре. Попытка добавить элемент с существующим ключом приведет к исключению.
Пример использования:
// Создание словаря
Dictionary<string, int> students = new Dictionary<string, int>();
// Добавление элементов
students.Add("Ivanov", 5);
students["Petrov"] = 4; // Альтернативный способ добавления/обновления
// Проверка наличия ключа
if (students.ContainsKey("Ivanov"))
{
// Получение значения по ключу
int mark = students["Ivanov"]; // mark == 5
}
// Перебор элементов
foreach (KeyValuePair<string, int> student in students)
{
// student.Key - ключ, student.Value - значение
Console.WriteLine($"{student.Key}: {student.Value}");
}
// Удаление элемента
students.Remove("Petrov");
Сравнение с другими коллекциями:
| Коллекция | Основное назначение | Доступ по индексу | Доступ по ключу | Уникальность ключей | Упорядоченность |
|---|---|---|---|---|---|
| List<T> | Последовательность элементов | Да | Нет | Нет | Да |
| HashSet<T> | Уникальный набор элементов | Нет | Нет | Да | Нет |
| Dictionary<TKey, TV> | Пары ключ-значение для быстрого поиска | Нет | Да | Да | Нет |