Por que Dictionary<TKey, TValue> é melhor que Hashtable em C#?
Olá a todos! Recentemente comecei a estudar C# e me deparei com coleções. Vejo que existem `Hashtable` (de `System.Collections`) e `Dictionary` (de `System.Collections.Generic`). Ambos armazenam pares chave-valor, mas em todos os lugares recomendam usar `Dictionary`.\n\nEscrevi um pequeno exemplo com `Hashtable`:\n\n```csharp\nHashtable table = new Hashtable();\ntable.Add("key1", 123);\ntable.Add("key2", "string");\n\nforeach (DictionaryEntry entry in table)\n{\n Console.WriteLine($"{entry.Key}: {entry.Value}");\n}\n```\n\nE com `Dictionary`:\n\n```csharp\nDictionary dict = new Dictionary();\ndict.Add("key1", 123);\ndict.Add("key2", 456); // aqui tudo é estrito\n\nforeach (KeyValuePair kvp in dict)\n{\n Console.WriteLine($"{kvp.Key}: {kvp.Value}");\n}\n```\n\nMas não entendo por que `Dictionary` é considerado mais preferível. Afinal, `Hashtable` é mais simples de usar — não precisa especificar tipos e aceita qualquer objeto. Qual é o problema? Existe