Dictionary <tkey,tvalue =“”>默认按键排序吗?</tkey,>

时间:2009-02-25 13:27:47

标签: .net dictionary

我正在使用Dictionary<TKey, TValue>,我在测试中得到了一些奇怪但有些可理解的行为。

无论顺序如何,当我调用Dictionary.Keys时,我都会在字典中添加条目,按照密钥类型的IComparable<T>实现所指定的顺序返回密钥。

这对我有好处,因为无论如何我想按顺序获取它们,但我找不到任何指定它们应该并且将始终以这种方式返回的地方。因此,我不知道是否依赖于它总是那样或者在List<T>我正在构建的(可能是多余的)排序。

我可以依赖这种行为吗?

2 个答案:

答案 0 :(得分:24)

您不能依赖此行为。这只是一个巧合,可能是由于您的样本大小或GetHashCode实现。一旦您在表格中添加了足够的项目并强制进行了足够的重新计算,就不会对键进行排序。

MSDN明确指出未指定密钥的顺序(http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)

答案 1 :(得分:16)

您正在寻找SortedDictionary<K,V>。字典<K,V>使用散列,小集合可能看起来与排序相似。