があり、それぞれとエントリを特定の順序でDictionary
追加するとします。さて、後でエントリが追加されたのと同じ順序で
これを繰り返すことができるようにしたい場合、それはこの辞書の単純なループで取得する順序ですか? key
value
Dictionary
foreach
List
そうでない場合は、どうすればそれができるかを聞いてうれしく思います。これは代わりに簡単に実行できることはわかっていますが、Dictionary
したくありません。
ありがとう
があり、それぞれとエントリを特定の順序でDictionary
追加するとします。さて、後でエントリが追加されたのと同じ順序で
これを繰り返すことができるようにしたい場合、それはこの辞書の単純なループで取得する順序ですか? key
value
Dictionary
foreach
List
そうでない場合は、どうすればそれができるかを聞いてうれしく思います。これは代わりに簡単に実行できることはわかっていますが、Dictionary
したくありません。
ありがとう
通常Dictionary
はアイテムの順序を保証するものではありません。
OrderedDictionary
追加された場所で注文アイテムを維持する場合に必要です。.Net Frameworkにはこのクラスの汎用バージョンがないため、型安全性を放棄するか、他の実装を見つける必要があることに注意してください(https://www.codeproject.com/Articles/18615/OrderedDictionary-TA-generic -Tim Sによって提案されたIOの実装)。
または、O(log n)ルックアップに問題がなく、キーを並べ替える必要がある場合-SortedDictionary。
あなたが望むものは:http Queue<T>
://msdn.microsoft.com/en-us/library/7977ey2c.aspxのように聞こえます
KeyValuePair<T, U>
アイテムを希望の順序で追加すると、foreach
先入れ先出しの順序になります。
Dictionary
sはハッシュテーブルです。つまり、ペアを反復処理すると、追加したのと同じ順序でペアが返されることを保証できません。
各ペアはであるため、必要に応じて、追加した順序で反復KeyValuePair<T_K, T_V>
できるようにすることができます。List<KeyValuePair<string, string>>
辞書の内部ソートは、使用されるハッシュ関数によって異なります。ただし、データの並べ替えられたビューが必要な場合は、を使用できますEnumerable.OrderBy
。