2009-02-25 73 views
11

我使用的是Dictionary<TKey, TValue>,我在测试中遇到了一些奇怪的,虽然有些可以理解的行为。默认情况下按字典<TKey,TValue>排序吗?

无论顺序如何,我在拨打Dictionary.Keys时将条目添加到词典中,键的返回顺序由IComparable<T>实现为键的类型指定。

这对我来说很好,因为无论如何我都想按顺序获取它们,但是我找不到任何指定它们应该并且总是以这种方式返回的位置。因此,我不知道是否依赖它总是这样,或者正在对我正在建设的List<T>进行排序(可能是多余的)。

我可以依靠这种行为吗?

回答

24

你不能依赖这种行为。这只是一个巧合,可能是由于您的示例大小或GetHashCode实现。一旦将足够的物品添加到表格中并强制进行足够的重新排列,则不会订购这些键。

MSDN明确地说,键的顺序是不确定的(http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)

16

你要找的SortedDictionary<K,V>。字典<K,V>使用散列,这与小套可能看起来表面上类似于排序。