यह संयोग से है, हालांकि अनुमानतः ऐसा है। आप बिल्कुल पर भरोसा नहीं करना चाहिए। आमतौर पर सरल परिस्थितियों के लिए होता है, लेकिन यदि आप तत्वों को हटाना शुरू करते हैं और उन्हें किसी भी हैश कोड के साथ या बस एक ही बाल्टी में लेते हैं, तो वह तत्व बाद में जोड़े जाने के बावजूद मूल की स्थिति लेगा दूसरों की तुलना में।
यह इस पुन: पेश करने के लिए अपेक्षाकृत बारीकियों है, लेकिन मैं थोड़ी देर पहले for another question यह करने के लिए कामयाब रहे:
using System;
using System.Collections.Generic;
class Test
{
static void Main(string[] args)
{
var dict = new Dictionary<int, int>();
dict.Add(0, 0);
dict.Add(1, 1);
dict.Add(2, 2);
dict.Remove(0);
dict.Add(10, 10);
foreach (var entry in dict)
{
Console.WriteLine(entry.Key);
}
}
}
परिणाम बताते हैं 10, 1, 2 के बजाय 1, 2, 10
नोट भले ही यह वर्तमान व्यवहार जैसा दिखता है, यदि आप कोई विलोपन नहीं करते हैं तो व्यवहार हमेशा सम्मिलन आदेश में तत्व उत्पन्न करेगा, इस बात की कोई गारंटी नहीं है कि भविष्य के कार्यान्वयन समान होंगे ... इसलिए प्रतिबंधित मामले में जहां आप जानते हैं कुछ भी नहीं हटाएगा, कृपया इस पर भरोसा न करें।
स्रोत
2009-09-21 07:17:48
संबंधित प्रश्न: http://stackoverflow.com/questions/657263/does-hashset-preserve-insertion-order –