Zamówiony słownik i słownik

Szukałem sposobu na posiadanie mojegoDictionary wylicz jegoKeyValuePair w tej samej kolejności, w jakiej zostały dodane. Teraz,Słownik słownika wyraźnie stwierdzam, że:

Dla celów wyliczenia każdy element w słowniku jest traktowany jakoKeyValuePair<TKey, TValue> struktura reprezentująca wartość i jej klucz. Kolejność zwracania elementów jest niezdefiniowana.

Dowiedziałem się, że potrzebujęOrderedDictionary, ale będąc sceptykiem, że jestem, postanowiłem spróbować sam:

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);
}

Wydajność:

OrderedDictionary
key0, value0
key1, value1
key2, value2
...

Dictionary
key0, value0
key1, value1
key2, value2
...

Jak widać, oba są uporządkowane i rodzą 2 pytania:
W takim przypadkuDictionary podać inną kolejność niż ta, w której wartości są dodawane? Czy mój pierwszyforeach pętla zapewnia mnie, żebym odzyskał mojąKeyValuePair w tej samej kolejności, czy muszę korzystać z indeksu?

questionAnswers(1)

yourAnswerToTheQuestion