字典<TKey,TValue>默认按键排序吗?

Gar*_*ler 11 .net dictionary

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

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

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

我可以依赖这种行为吗?

Jar*_*Par 24

你不能依赖这种行为.这只是一个巧合,可能是由于您的样本大小或GetHashCode实现.将足够多的项目添加到表格中并强制进行足够的重新加密后,将不会对键进行排序.

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


Rub*_*ink 16

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