为什么 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` 使用起来更简单——不需要指定类型,并且它可以接受任何对象。有什么陷阱吗?有没有