Hashtable en C# Explicado: Almacenamiento Clave-Valor, Operaciones y Ejemplos Prácticos
¿Qué Es un Hashtable en C#?
Un Hashtable es una colección no genérica que almacena datos como pares clave-valor. A diferencia de arrays o listas que contienen un solo valor por índice, un hashtable permite recuperar un valor directamente usando su clave única, proporcionando búsqueda O(1) en tiempo promedio.
Entradas típicas se ven así:
{ "001", ".Net" } { "002", "C#" } { "003", "ASP.Net" } Aquí, las claves son "001", "002" y "003", y los valores correspondientes son ".Net", "C#" y "ASP.Net".
A continuación profundizamos en las operaciones más comunes que usará con Hashtable.
Declarar un Hashtable
Instancie un hashtable usando el tipo Hashtable y la palabra clave new:
Hashtable ht = new Hashtable();
Añadir Elementos
Use el método Add para insertar un par clave-valor. Tanto la clave como el valor deben suministrarse:
ht.Add("001", ".Net"); ht.Add("002", "C#"); ht.Add("003", "ASP.Net"); Ejemplo 1 – Mostrar Todos los Valores
La siguiente aplicación de consola demuestra crear un hashtable, poblarlo e imprimir cada valor:

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(); } } } Explicación
- Declarar la variable
Hashtableht. - Añadir pares clave-valor usando
Add. - Recuperar la colección de claves vía
ht.Keys(devuelve unICollection). - Iterar sobre las claves y mostrar el valor asociado con
ht[key].
Ejecutar el programa produce:

Métodos Comunes
ContainsKey
Comprobar si una clave específica existe:
ht.ContainsKey("001"); // devuelve true si la clave está presente ContainsValue
Verificar si un valor particular está almacenado en el hashtable:
ht.ContainsValue("C#"); // devuelve true si el valor se encuentra Ejemplo 2 – Usando ContainsKey & ContainsValue
A continuación un programa conciso que demuestra ambos métodos:

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(); } } } Explicación
- Usar
ContainsKeyconfirma la presencia de "001". - Usar
ContainsValueconfirma que "C#" está almacenado.
La consola muestra:

Conclusiones Clave
Un Hashtable almacena elementos como pares clave-valor, permitiendo búsqueda rápida cuando conoce la clave. Aunque Dictionary<TKey, TValue> genérico es recomendado para seguridad de tipos en C# moderno, entender Hashtable sigue siendo valioso para código legacy y escenarios de interoperabilidad.
Lenguaje C
- Expresiones, sentencias y bloques en C#: Guía completa con ejemplos prácticos
- Bucle do‑while en C++: Sintaxis, ejemplos prácticos y bucles anidados
- Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
- Dominando el tipo de dato char en C++: Declaración, ASCII y técnicas de conversión
- Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Dominando Colecciones en C#: Tutorial Práctico con Ejemplos del Mundo Real
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
- Python timeit(): medición de tiempo de ejecución con ejemplos prácticos