2009-02-25 8 views
11

私はDictionary<TKey, TValue>を使用していますが、私のテストでは幾分理解できる動作ですが、いくらか奇妙になりました。ディクショナリでキーによるディクショナリ<TKey、TValue>の順序はありますか?

Dictionary.Keysを呼び出すと、辞書に項目を追加しても、キーは、キーの種類のIComparable<T>実装で指定された順序で返されます。

これは私がその順序でそれらを取得したいので、私にとっては良いことですが、この方法で返されるべきで、いつも返されるべきであることを指定する場所を見つけることはできません。したがって、私はいつもそれに頼っているのか、(潜在的に冗長な)並べ替えを行うのかを私は知りません。List<T>私は建築しています。

この動作に依存する可能性はありますか?

答えて

24

この動作に依存することはできません。これは、サンプルサイズまたはGetHashCode実装の可能性が高い偶然にすぎません。十分なアイテムをテーブルに追加し、十分な再ハッシュを強制すると、キーは順序付けられません。

MSDNは明示的にあなたがSortedDictionary<K,V>を探しているhttp://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)

16

(キーの順序が指定されていないと言います。辞書<K,V>は小さなセットでソートに似た見えるかもしれハッシュを使用しています。

関連する問題