Avatar ·

Por que Dictionary é preferível a Hashtable em C#? Analisando as diferenças

Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com uma situação que me confundiu. Ao estudar coleções, encontrei duas classes semelhantes: `Hashtable` e `Dictionary`. Ambas, pelo que entendi, armazenam pares "chave-valor" e permitem buscar dados rapidamente pela chave. Em exemplos antigos de código e em alguns livros, vejo frequentemente `Hashtable`. Por exemplo, assim: ```csharp Hashtable table = new Hashtable(); table.Add("chave1", "valor1"); table.Add(123, 42); // chave — int, valor — int string val = (string)table["chave1"]; // precisa de cast explícito ``` Mas em projetos modernos e no Stack Overflow, todo mundo escreve sobre `Dictionary`. Tentei ambas as opções e notei que com `Dictionary` o código parece diferente: ```csharp Dictionary dict = new Dictionary(); dict.Add("chave1", "valor1"); // dict.Add(123, 42); // Erro de compilação! Tipo incorreto string val = dict["chave1"]; // cast não é necessário ``` Minha pergunta: qual é a diferença fundamental