Stavo cercando un modo per avere il mio Dictionary
enumerare il suo KeyValuePair
nello stesso ordine in cui sono stati aggiunti. Ora, Dictionary's doc affermare chiaramente che:OrderedDictionary and Dictionary
Ai fini del conteggio, ogni voce del dizionario è trattata come una struttura
KeyValuePair<TKey, TValue>
che rappresenta un valore e la sua chiave. L'ordine in cui vengono restituiti gli articoli non è definito.
ho scoperto che quello che mi serviva era un OrderedDictionary
, ma essendo lo scettico che io sono, ho deciso di provare io stesso:
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);
}
uscita:
OrderedDictionary
key0, value0
key1, value1
key2, value2
...
Dictionary
key0, value0
key1, value1
key2, value2
...
Come si può vedere, entrambi sono ordinati e questo solleva 2 domande:
In tal caso il dà un ordine diverso da quello in cui vengono aggiunti i valori? Il mio primo ciclo foreach
mi assicura di recuperare il mio KeyValuePair
nello stesso ordine o devo usare l'indice?
Provare a usare * * tasti a caso, mentre 'Add'ing alle collezioni e vedere la differenza. – I4V
Solo per informazioni: @ I4V Provato, e questo non cambia. – DeadlyJesus