2009-02-25 74 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>使用散列,這與小套可能看起來表面上類似於排序。