我正在使用Dictionary<TKey, TValue>
,我在测试中得到了一些奇怪但有些可理解的行为。
无论顺序如何,当我调用Dictionary.Keys
时,我都会在字典中添加条目,按照密钥类型的IComparable<T>
实现所指定的顺序返回密钥。
这对我有好处,因为无论如何我想按顺序获取它们,但我找不到任何指定它们应该并且将始终以这种方式返回的地方。因此,我不知道是否依赖于它总是那样或者在List<T>
我正在构建的(可能是多余的)排序。
我可以依赖这种行为吗?
答案 0 :(得分:24)
您不能依赖此行为。这只是一个巧合,可能是由于您的样本大小或GetHashCode实现。一旦您在表格中添加了足够的项目并强制进行了足够的重新计算,就不会对键进行排序。
MSDN明确指出未指定密钥的顺序(http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)
答案 1 :(得分:16)
您正在寻找SortedDictionary<K,V>
。字典<K,V>
使用散列,小集合可能看起来与排序相似。