2012-08-07 7 views
14

मैं सिर्फ पाया है कि नेट Fx अब 3 उपयोगी इंटरफेस है:क्यों हैशसेट <T> IReadOnlyCollection <T> लागू नहीं करता है?

  1. IReadOnlyCollection<T>
  2. IReadOnlyList<T>
  3. IReadOnlyDictionary<K,V>

और मैं थोड़ा उलझन में हूँ क्यों HashSet<T>IReadOnlyCollection<T> को लागू नहीं करते ? क्या कोई कारण हैं, या माइक्रोसॉफ्ट बस सेट के बारे में भूल गया है?

युपीडी

दो घंटे googling मैंने पाया बीसीएल जो .Count संपत्ति है, लेकिन IReadOnlyCollection<T> इंटरफ़ेस को लागू नहीं है में कई संग्रह देखते हैं कि बाद।

UPD2

मैं इस पोस्ट http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859 और जहां he've सूची < अलावा

विल अन्य संग्रहों का अनुसरण कहा Immo Landwerth से जवाब मिल गया है> और शब्दकोश <> पर अपडेट किया गया इन इंटरफेस का समर्थन करें?

बिल्कुल। असल में, हमारे सभी अंतर्निर्मित संग्रह प्रकार पहले से ही इरेडऑनलीलिस्ट <> और IReadOnlyDictionary <> लागू करें। इसका मतलब है, आप सीधे सूची, टी [] या शब्दकोश <> को एपीआई के उदाहरण को पास कर सकते हैं जो इसके आईआरएडऑनली-वर्जन लेता है।

+0

ठीक है, तो क्यों [सूची ] (http://msdn.microsoft.com/en-us/library/6sh2ey19 (v = vs.110)) करता है? – hazzik

+0

अजीब। इम्हो, एक असंगत डिजाइन निर्णय। Http://www.infoq.com/news/2011/10/ReadOnly-WInRT/ –

+0

देखें जहां ISet है? – hazzik

उत्तर

13

ढांचे के संस्करण 4.5 में, HashSet<T>IReadOnlyCollection<out T> लागू नहीं करता है।

इस चूक को ढांचे के संस्करण 4.6 में हल किया गया था (ऊपर दिए गए प्रश्न के लगभग 12 महीने बाद जारी किया गया था)।

ये सुधार not limited to HashSet<T> हैं, Stack<T> और Queue<T> जैसे अन्य संग्रह इन सुधारों को प्राप्त हुए हैं।

किसी भी चूक के कारण पर अटकलें चल रही हैं। यह निरीक्षण या समय के दबाव हो सकता है लेकिन स्पष्ट रूप से, यह थोड़ा परिणाम है। मुझे संदेह है कि माइक्रोसॉफ्ट डेवलपमेंट टीम से भी प्रत्यक्ष इनपुट कुछ हद तक व्यक्तिपरक होगा, भले ही हम संबंधित उपाख्यानों का आनंद लें।