Ich war auf der Suche nach einer Möglichkeit, meine Dictionary
seine KeyValuePair
in der gleichen Reihenfolge, die sie hinzugefügt wurden, aufzuzählen. Nun Dictionary's doc klar sagen, dass:OrderedDictionary und Dictionary
Für die Zwecke der Aufzählung, jedes Element in dem Wörterbuch als
KeyValuePair<TKey, TValue>
Struktur behandelt wird, einen Wert und seine Schlüssel darstellt. Die Reihenfolge, in der die Elemente zurückgegeben werden, ist nicht definiert.
fand ich heraus, dass das, was ich brauchte, war ein OrderedDictionary
, aber die Skeptiker, dass ich 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);
}
Ausgang:
OrderedDictionary
key0, value0
key1, value1
key2, value2
...
Dictionary
key0, value0
key1, value1
key2, value2
...
Wie Sie kann sehen, beide sind bestellt, und das wirft 2 Fragen auf:
In welchem Fall gibt die Dictionary
eine andere Reihenfolge, die die, in denen die Werte hinzugefügt werden? Versichert meine erste foreach
Schleife, dass ich meine KeyValuePair
in der gleichen Reihenfolge abrufen kann, oder muss ich den Index verwenden?
Versuchen zu verwenden * random * Tasten während 'Add'ing zu den Sammlungen und den Unterschied sehen. – I4V
Nur zur Information: @ I4V Versucht es, und das ändert sich nicht. – DeadlyJesus