Avatar ·

为什么在C#中Dictionary比Hashtable更受推荐?解析差异

大家好!我是一名C#初学者,遇到了一个让我困惑的情况。在学习集合时,我发现了两个相似的类:`Hashtable`和`Dictionary`。据我理解,它们都存储“键-值”对,并允许通过键快速查找数据。 在旧的代码示例和一些书籍中,我经常看到`Hashtable`。例如: ```csharp Hashtable table = new Hashtable(); table.Add("key1", "value1"); table.Add(123, 42); // 键是int,值是int string val = (string)table["key1"]; // 需要显式转换 ``` 但在现代项目和Stack Overflow上,大家都在写`Dictionary`。我尝试了两种方式,发现使用`Dictionary`的代码看起来不同: ```csharp Dictionary dict = new Dictionary(); dict.Add("key1", "value1"); // dict.Add(123, 42); // 编译错误!类型不匹配 string val = dict["key1"]; // 不需要转换 ``` 我的问题是:根本区别在于