分類:[.NET 全般]
2015/04/01(Wed) 14:58:06 編集(投稿者)
System.Collections.Generic.Dictionaryについての質問です。
このクラスは連想配列を実装しています。
私の認識では連想配列は要素の順序を保存しないと考えています。
しかし、順番に要素を Add() した後、foreach()で回すとAdd()した順番通りに要素
が取得できます。
また、以下のようにして、できあがったDictionaryをforeach()で回すと、ちゃんと
ソートされた順序で要素が取得できます。
----------------------------------------------------
int[] NumAry = { 9, 2, 5, 6, 10, 3, 4, 1, 7 };
var NumList = NumAry.ToList();
NumList.Sort(); // ここでソート
var NumDic =
NumList.ToDictionary(Item => Item); // Dictionary化でソート結果を忘れる?
foreach (var Num in NumDic.Values)
{
Trace.Write(Num + ", ");
}
----------------------------------------------------
[結果]
1, 2, 3, 4, 5, 6, 7, 9, 10,
----------------------------------------------------
もしかして、Dictionaryは要素の順序を記憶しているのでしょうか?