Desenvolvimento - C#
Hashtable - Dominando as classes do C#
por Joel Rodrigues
Sobre a classe
A classe Hashtable localizada no namespace System.Collections, como o próprio namespace sugere, é uma coleção de objetos onde cada elemento é composto por uma chave e um valor. Assim como a classe ArrayList, o Hashtable é flexível, ou seja, pode-se adicionar objetos de qualquer tipo (pois é uma coleção de object) e seu tamanho se adapta à quantidade de itens que contém, expandindo e contraindo suas dimensões.
Os elementos podem ser acessados pela respectiva chave e essa chave deve ser única para cada item, facilitando a localização de um objeto específico. Em comparação com o acesso aos elementos de um array, o hashtable adapta-se mais facilmente a diversas situações, pois a chave não necessariamente é um número, pelo contrário, trata-se de um object. Por exemplo, podemos usar um hashtable para representar um determinado objeto, quando não é preciso criar um struct ou uma classe para isso. Vejamos a Listagem 1 onde usamos uma coleção desse tipo para representar as configurações de um sistema, armazenando informações de vários tipos diferentes.
Como foi dito, as chaves são valores únicos. Ao tentar inserir uma chave duplicada, é gerada uma exceção do tipo ArgumentException, informando que a chave que se está tentando inserir já existe.
Listagem 1: Exemplo de utilização do Hashtable
Hashtable config = new Hashtable(); //Valor do tipo Int32 config[“VERSAO”] = 1; //Valor do tipo String config[“DIRETORIO”] = “C:\\Sistema”; //Valor do tipo DateTime config[“VALIDADE”] = DateTime.Today.AddMonths(1);
Principais propriedades
- Count: Quantidade de elementos contidos na lista.
- Keys: Coleção de objetos usados como chaves na lista.
- Values: Coleção de objetos contidos na lista (os valores e não as chaves).
Principais métodos
- Add(object key, object value): Adiciona um objeto à lista, juntamente com uma chave que o identifica.
- AsQueryable(): Retorna uma coleção IQueryable, na qual se pode executar consultas com LINQ (inclusive com Lambda Expressions).
- Cast(): Converte os elementos da coleção para o tipo especificado, os quais são retornados em uma coleção IEnumerable.
- Clear(): Exclui todos os elementos da lista.
- Clonte(): Cria uma cópia do objeto (da lista).
- Contains(object key) e ContainsKey(object key): funcionam igualmente, retornando true se a chave especificada nos parâmetros existe na lista, ou false em caso contário.
- ContainsValue(object value): Retorna true se o valor informado está contido na lista (nos valores e não nas chaves).
- Remove(object key): Exclui da lista o valor relativo à chave informada nos parâmetros.
Bem, esse foi mais um artigo da série “Dominando as classes do C#”, cujo objetivo é explicar o funcionamento, os principais métodos e propriedades de algumas classes do C#. Vale lembrar que a maioria destas também está disponível em VB.NET, por tratar-se de um recurso do framework .NET.
Caso alguém deseje saber mais sobre uma classe específica (nativa do .NET), favor me enviar um email solicitando para que eu possa analisar a possibilidade de atender o pedido e providenciar o conteúdo.
Por enquanto ficamos por aqui. Até o próximo artigo.








