OrderedDictionary und Dictionary
Ich suchte nach einer Möglichkeit, meine zu habenDictionary
aufzählen seineKeyValuePair
in der gleichen Reihenfolge, in der sie hinzugefügt wurden. Jetzt,Dictionary's doc Stellen Sie klar fest, dass:
Zum Zwecke der Aufzählung wird jedes Element im Wörterbuch als behandeltKeyValuePair<TKey, TValue>
Struktur, die einen Wert und seinen Schlüssel darstellt. Die Reihenfolge, in der die Artikel zurückgegeben werden, ist undefiniert.
Ich fand heraus, dass ich eine brauchteOrderedDictionary
Da ich aber der Skeptiker bin, habe ich beschlossen, es selbst zu versuchen:
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);
}
Ausgabe:
OrderedDictionary
key0, value0
key1, value1
key2, value2
...
Dictionary
key0, value0
key1, value1
key2, value2
...
Wie Sie sehen, sind beide bestellt, und das wirft zwei Fragen auf:
In welchem Fall tut dasDictionary
Geben Sie eine andere Reihenfolge an als die, in der die Werte addiert werden. Tut mein erstesforeach
versichere mir, meineKeyValuePair
in der gleichen Reihenfolge oder muss ich den Index verwenden?