【发布时间】:2014-05-24 16:59:45
【问题描述】:
我在 C# 中使用了相当多的通用字典。比如:
var example = new Dictionary<int, string> {
{ 0, "Test0" },
{ 1, "Test1" } };
我隐约记得有人告诉我,在泛型出现之前,您可以使用 Hashtable()。基本相同,但没有特定类型(我认为值类型将被装箱)。
var example2 = new Hashtable {
{0, "Test0"},
{1, "Test1"} };
还有类似这样的问题讨论为什么我们更喜欢字典而不是哈希表 (Why is Dictionary preferred over hashtable?)。
但是所有其他“字典”类型呢?
-
SortedDictionary<K,V>- 似乎像 Dictionary 一样工作,但它的 .Keys 集合已排序。不过我不知道你为什么会在意。 -
OrderedDictionary不像 Hashtable 那样是非泛型的,但我无法理解与 Hashtable 不同的地方。 http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx 提到它的键没有像 SortedDictionary 那样排序,所以我只是不明白为什么或何时使用它。 -
ListDictionary- 当元素数量少于 10 个时,比 Hashtable 更小/更快(但它比通用字典快吗?)。再说一次,我不知道你什么时候会使用它。
我也对SortedList<K,V> 感到困惑。当我听到List 时,我不认为键/值对(也许我应该?)。它实现了IDictionary<TKey,TValue>。从这个问题,我可以看出它与 SortedDictionary 的不同之处在于它的性能特征(What's the difference between SortedList and SortedDictionary?)
谁能简要解释一下何时使用哪种字典类型?
为了简单起见,假设我可以访问 .Net 4.5 或更高版本...那么也许 Hashtable 不再有用了?
【问题讨论】:
-
Ordered/SortedDictionarys 都早于 LINQ,这就是我认为它们存在的原因。在 ListDictionary 上不确定
标签: c# .net collections