Avatar ·

为什么 Dictionary<TKey, TValue> 比 Hashtable 更好?

大家好!我最近开始学习 C# 并遇到了集合。我看到有 `Hashtable`(来自 `System.Collections`)和 `Dictionary`(来自 `System.Collections.Generic`)。它们似乎都存储键值对,但到处都建议使用 `Dictionary`。 我写了一个使用 `Hashtable` 的小例子: ```csharp Hashtable table = new Hashtable(); table.Add("key1", 123); table.Add("key2", "строка"); foreach (DictionaryEntry entry in table) { Console.WriteLine($"{entry.Key}: {entry.Value}"); } ``` 以及使用 `Dictionary` 的例子: ```csharp Dictionary dict = new Dictionary(); dict.Add("key1", 123); dict.Add("key2", 456); // 这里一切严格 foreach (KeyValuePair kvp in dict) { Console.WriteLine($"{kvp.Key}: {kvp.Value}"); } ``` 但我不明白为什么 `Dictionary` 被认为更优。毕竟 `Hashtable` 使用起来更简单——不需要指定类型,并且它可以接受任何对象。有什么陷阱吗?有没有