Hashtable в C#: хранение ключ-значение, операции и практические примеры
Что такое Hashtable в C#?
Hashtable — не-дженерик коллекция, хранящая данные в виде пар ключ-значение. В отличие от массивов или списков, хранящих одно значение на индекс, хеш-таблица позволяет получать значение напрямую по уникальному ключу, обеспечивая O(1) среднее время поиска.
Типичные записи выглядят так:
{ "001", ".Net" }
{ "002", "C#" }
{ "003", "ASP.Net" }
Здесь ключи — "001", "002", "003", а соответствующие значения — ".Net", "C#", "ASP.Net".
Ниже мы рассмотрим самые частые операции с Hashtable.
Объявление Hashtable
Инстанцируйте хеш-таблицу с типом Hashtable и ключевым словом new:
Hashtable ht = new Hashtable();
Добавление элементов
Используйте метод Add для вставки пары ключ-значение. И ключ, и значение должны быть указаны:
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
Пример 1 – Отображение всех значений
Следующее консольное приложение демонстрирует создание хеш-таблицы, заполнение её и печать каждого значения:

using System;
using System.Collections;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
Hashtable ht = new Hashtable();
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
ICollection keys = ht.Keys;
foreach (String k in keys) {
Console.WriteLine(ht[k]);
}
Console.ReadKey();
}
}
}
Пояснение
- Объявляем переменную
Hashtableс именемht. - Добавляем пары ключ-значение через
Add. - Получаем коллекцию ключей через
ht.Keys(возвращаетICollection). - Итерируем по ключам и выводим ассоциированное значение через
ht[key].
Запуск программы выводит:

Частые методы
ContainsKey
Проверяет наличие конкретного ключа:
ht.ContainsKey("001"); // возвращает true, если ключ присутствует
ContainsValue
Проверяет, хранится ли конкретное значение в хеш-таблице:
ht.ContainsValue("C#"); // возвращает true, если значение найдено
Пример 2 – Использование ContainsKey и ContainsValue
Ниже краткая программа, демонстрирующая оба метода:

using System;
using System.Collections;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
Hashtable ht = new Hashtable();
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
Console.WriteLine(ht.ContainsKey("001")); // true
Console.WriteLine(ht.ContainsValue("C#")); // true
Console.ReadKey();
}
}
}
Пояснение
ContainsKeyподтверждает наличие "001".ContainsValueподтверждает, что "C#" сохранено.
Консоль отображает:

Ключевые выводы
Hashtable хранит элементы как пары ключ-значение, обеспечивая быстрый поиск при известном ключе. Хотя дженерик Dictionary<TKey, TValue> рекомендуется для типовой безопасности в современном C#, понимание Hashtable остаётся ценным для legacy-кода и сценариев взаимодействия.
Язык C
- Выражения, операторы и блоки в C#: подробное руководство с примерами
- Цикл do-while в C++: синтаксис, примеры и вложенные циклы
- Указатели в C++: концепции, примеры и практические применения
- Тип данных char в C++: объявление, ASCII и методы преобразования
- Перегрузка операторов в C++: практическое руководство с примерами кода
- Функции в C++: подробное объяснение с практическими примерами кода
- Коллекции в C#: практическое руководство с реальными примерами
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики