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
в том же порядке, или я должен использовать индекс?