Dictionary
benim KeyValuePair
numaranın eklendikleri sırayla numaralandırmasını sağlamanın bir yolunu arıyordum.OrderedDictionary ve Sözlük
numaralandırma amaçları için, sözlükte her öğenin bir değeri ve onun anahtarı temsil eden bir
KeyValuePair<TKey, TValue>
yapı olarak kabul edilir: Şimdi Dictionary's doc açıkça ifade etmektedirler. Öğelerin iade edildiği sıra tanımsızdır.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); }
Çıktı:: Size şöyle
OrderedDictionary key0, value0 key1, value1 key2, value2 ... Dictionary key0, value0 key1, value1 key2, value2 ...
Ben bir OrderedDictionary
oldu gerekiyordu ama ben şüpheci olmak, kendim denemeye karar verdi neyi öğrendim Görebilir, her ikisi de sipariş edilir ve bu 2 soru yükseltir:
Bu durumda Dictionary
, değerlerin eklendiği farklı bir sıra verir mi? İlk foreach
döngüsüm, KeyValuePair
numaramı aynı sırayla almamı sağlar mı yoksa dizini mi kullanmalıyım?
deneyin Add'ing 'ederken koleksiyonlara * rastgele * tuşlarını kullanın ve farkı görmek için. – I4V
Sadece bilgi için: @ I4V Bunu denedim ve bu değişmiyor. – DeadlyJesus