Avatar ·

¿Por qué Dictionary<TKey, TValue> es mejor que Hashtable en C#?

¡Hola a todos! Recientemente comencé a estudiar C# y me encontré con las colecciones. Veo que hay `Hashtable` (de `System.Collections`) y `Dictionary` (de `System.Collections.Generic`). Ambos almacenan pares clave-valor, pero en todas partes recomiendan usar `Dictionary`. Escribí un pequeño ejemplo con `Hashtable`: ```csharp Hashtable table = new Hashtable(); table.Add("key1", 123); table.Add("key2", "строка"); foreach (DictionaryEntry entry in table) { Console.WriteLine($"{entry.Key}: {entry.Value}"); } ``` Y con `Dictionary`: ```csharp Dictionary dict = new Dictionary(); dict.Add("key1", 123); dict.Add("key2", 456); // aquí todo es estricto foreach (KeyValuePair kvp in dict) { Console.WriteLine($"{kvp.Key}: {kvp.Value}"); } ``` Pero no entiendo por qué `Dictionary` se considera más preferible. Después de todo, `Hashtable` es más fácil de usar: no es necesario especificar tipos y acepta cualquier objeto. ¿Cuál es el truco? ¿Hay algún...