2009-02-25 12 views
11

मैं Dictionary<TKey, TValue> का उपयोग कर रहा हूं और मुझे कुछ अजीब लग रहा है, हालांकि मेरे परीक्षणों में कुछ हद तक समझने योग्य व्यवहार है।शब्दकोश <TKey, TValue> डिफ़ॉल्ट रूप से कुंजी द्वारा ऑर्डर करता है?

कोई फर्क नहीं पड़ता कि मैं Dictionary.Keys पर कॉल करने के लिए शब्दकोश में प्रविष्टियां जोड़ता हूं, कुंजी को कुंजी के प्रकार के लिए IComparable<T> कार्यान्वयन द्वारा निर्दिष्ट क्रम में वापस कर दिया जाता है।

यह मेरे लिए अच्छा है क्योंकि मैं उन्हें उस क्रम में प्राप्त करना चाहता हूं, लेकिन मुझे यह कहीं भी नहीं मिल रहा है कि यह निर्दिष्ट करता है कि उन्हें हमेशा इस तरह से वापस किया जाना चाहिए। इसलिए, मुझे नहीं पता कि इस पर भरोसा करना है या नहीं, List<T> पर मैं हमेशा ऐसा (संभावित रूप से अनावश्यक) प्रकार कर रहा हूं।

क्या मैं इस व्यवहार पर भरोसा कर सकता हूं या नहीं?

उत्तर

24

आप इस व्यवहार पर भरोसा नहीं कर सकते हैं। यह सिर्फ एक संयोग है जो आपके नमूना आकार या GetHashCode कार्यान्वयन के कारण होने की संभावना है। एक बार जब आप टेबल में पर्याप्त आइटम जोड़ते हैं और पर्याप्त रीहैश को बल देते हैं तो चाबियों का आदेश नहीं दिया जाएगा।

MSDN स्पष्ट रूप से कहते हैं कुंजी के आदेश अनिर्दिष्ट है (http://msdn.microsoft.com/en-us/library/yt2fy5zk.aspx)

16

आप SortedDictionary<K,V> के लिए देख रहे हैं। शब्दकोश <K,V> हैशिंग, जो छोटे सेट के साथ अल्पज्ञता छँटाई करने के लिए समान लग सकता है उपयोग करता है।

संबंधित मुद्दे