OrderedDictionary и словарь

Я искал способ, чтобы мойDictionary перечислить егоKeyValuePair в том же порядке, в котором они были добавлены. Сейчас,Толковый словарь'с док четко заявить, что:

Для целей перечисления каждый элемент в словаре рассматривается какKeyValuePair структура, представляющая значение и его ключ. Порядок возврата товаров не определен.

Я узнал, что мне нужно былоOrderedDictionaryНо, будучи скептиком, я решил попробовать сам:

OrderedDictionary od = new OrderedDictionary();
Dictionary d = new Dictionary();

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
...

Как видите, оба заказаны, и это поднимает 2 вопроса:

В каком случаеDictionary дать другой порядок, в котором добавлены значения? Делает мой первыйforeach Цикл уверить меня, чтобы получить мойKeyValuePair в том же порядке, или я должен использовать индекс?

Ответы на вопрос(1)

Ваш ответ на вопрос