OrderedDictionary и словарь
Я искал способ, чтобы мойDictionary
перечислить егоKeyValuePair
в том же порядке, в котором они были добавлены. В настоящее время,Словарь словаря четко заявить, что:
Для целей перечисления каждый элемент в словаре рассматривается какKeyValuePair<TKey, TValue>
структура, представляющая значение и его ключ. Порядок возврата товаров не определен.
Я узнал, что мне нужно былоOrderedDictionary
Но, будучи скептиком, я решил попробовать сам:
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
...
Как видите, оба заказаны, и это поднимает 2 вопроса:
В каком случаеDictionary
дать другой порядок, в котором добавлены значения? Делает мой первыйforeach
Цикл уверить меня, чтобы получить мойKeyValuePair
в том же порядке, или я должен использовать индекс?