Dictionary
は、追加されたのと同じ順番でKeyValuePair
を列挙する方法を探していました。OrderedDictionaryとDictionary
列挙の目的のために、辞書内の各項目は、値とそのキーを表す
KeyValuePair<TKey, TValue>
構造として扱われる:今、Dictionary's docははっきりと述べています。アイテムが返される順序は未定義です。OrderedDictionary od = new OrderedDictionary(); Dictionary<String, String> d = new Dictionary<String, String>(); for (int i = 0; i < 10; i++) { od.Add("key"+i,"value"+i); d.Add("key"+i,"value"+i); } System.Console.WriteLine("OrderedDictionary"); foreach (DictionaryEntry de in od) { System.Console.WriteLine(de.Key +", " +de.Value); } System.Console.WriteLine("Dictionary"); foreach (var tmp in d) { System.Console.WriteLine(tmp.Key +", " + tmp.Value); }
出力:あなたのよう
OrderedDictionary key0, value0 key1, value1 key2, value2 ... Dictionary key0, value0 key1, value1 key2, value2 ...
は私がOrderedDictionary
だっ必要ですが、私は懐疑的であること、私はそれを自分で試してみることに何のことが判明しましたどちらも注文されており、2つの質問が発生します:
この場合、Dictionary
は値が追加された注文と異なる注文ですか? 私の最初のforeach
ループは私のKeyValuePair
を同じ順序で取り出すことを保証しますか、またはインデックスを使用する必要がありますか?
てみAdd'ing 'しばらくコレクションに*ランダム*キーを使用して違いを見るために。 – I4V
情報のみ: @ I4V試してみてください。それは変わりません。 – DeadlyJesus