Hashtable em C# Explicado: Armazenamento Chave-Valor, Operações e Exemplos Práticos
O que é um Hashtable em C#?
Um Hashtable é uma collection não-genérica que armazena dados como pares chave-valor. Diferente de arrays ou listas que mantêm um único valor por índice, uma hashtable permite recuperar um valor diretamente usando sua chave única, fornecendo lookup O(1) em tempo médio.
Entradas típicas parecem com isto:
{ "001", ".Net" }
{ "002", "C#" }
{ "003", "ASP.Net" }
Aqui, as chaves são "001", "002" e "003", e os valores correspondentes são ".Net", "C#" e "ASP.Net".
Abaixo, mergulhamos nas operações mais comuns que você usará com Hashtable.
Declarando um Hashtable
Instancie um hashtable usando o tipo Hashtable e a palavra-chave new:
Hashtable ht = new Hashtable();
Adicionando Elementos
Use o método Add para inserir um par chave-valor. Tanto a chave quanto o valor devem ser fornecidos:
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
Exemplo 1 – Exibindo Todos os Valores
A seguinte aplicação console demonstra criação de hashtable, população e impressão de 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();
}
}
}
Explicação
- Declarar a variável
Hashtableht. - Adicionar pares chave-valor usando
Add. - Recuperar a coleção de chaves via
ht.Keys(retorna umICollection). - Iterar sobre as chaves e exibir o valor associado com
ht[key].
Executar o programa produz:

Métodos Comuns
ContainsKey
Verifica se uma chave específica existe:
ht.ContainsKey("001"); // retorna true se chave presente
ContainsValue
Verifica se um valor particular está armazenado no hashtable:
ht.ContainsValue("C#"); // retorna true se valor encontrado
Exemplo 2 – Usando ContainsKey & ContainsValue
Abaixo está um programa conciso que demonstra ambos os 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();
}
}
}
Explicação
- Usando
ContainsKeyconfirma a presença de "001". - Usando
ContainsValueconfirma que "C#" está armazenado.
O console exibe:

Principais Conclusões
Um Hashtable armazena elementos como pares chave-valor, permitindo lookup rápido quando você conhece a chave. Embora Dictionary<TKey, TValue> genérico seja recomendado para type safety em C# moderno, entender Hashtable permanece valioso para código legado e cenários de interoperabilidade.
Linguagem C
- Expressões, Instruções e Blocos em C#: Guia Completo com Exemplos Práticos
- Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
- Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
- Dominando o Tipo Char em C++: Declaração, ASCII e Técnicas de Conversão
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Dominando Collections em C#: Tutorial Prático com Exemplos do Mundo Real
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Função round() em Python Explicada com Exemplos Práticos
- Dominando a Função map() do Python: Sintaxe, Exemplos e Boas Práticas