Sunday 15 February 2015

.net - dictionary.Keys.Add? -


। नेट में, IDictionary & lt; K, V & gt; परिभाषित करता है .Keys और .values ​​ गुण, जिनमें से प्रत्येक ICollection के बजाय IEnumerable & lt; & gt; है, जो ऐसा लगता है कि यह एक

या IDictionary & lt; K, V & gt; ?

.values ​​ = "पाठ">

नहीं, शायद कोई उचित उपयोग केस नहीं। इसके लिए बहुत कम (संभवत: शून्य) वैध कारण हैं।

यह शब्दकोष & lt; टीके, टीवील्यू & gt; क्लास एक KeyCollection देता है < कोड> .कीएं बदले में नॉनसमर्थित अपवाद के साथ "किसी कुंजीयन को एक शब्दकोश से प्राप्त किए जाने की अनुमति नहीं है।" जब भी इसे सीधे जोड़ना चाहते हैं मैं सोचता हूं कि यह विरासत के कारणों के लिए एक आइकलेंक देता है और संभवत: अब सभी कीमतों से बचा जाना चाहिए।

वास्तव में जब तक आइकलिंग .कीज में इसके युक्त IDictionary का संदर्भ था, मैं कुछ भी उपयोगी नहीं देख सकता। आइकलिंग का जोड़ें को IDictionary को बताएं कि यह क्या जोड़ता है शायद आप एक सेट के कुछ फार्म को लागू करना चाहते थे, आप ऐसा कुछ कर सकते हैं:

  सार्वजनिक वर्ग स्ट्रिंगसेट: IDictionary & lt; स्ट्रिंग, इंट & gt; {निजी रीडोनली डिक्शनरी & lt; स्ट्रिंग, इंट & gt; _InternalDictionary = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); सार्वजनिक int इस [स्ट्रिंग कुंजी] {प्राप्त {वापसी _InternalDictionary [कुंजी]; } सेट {_InternalDictionary [key] = मान; }} निजी स्ट्रिंग कॉलेक्शन _ कीज़; सार्वजनिक आइकलेंक्शन & lt; स्ट्रिंग & gt; कुंजी {प्राप्त करें (यदि (_Keys == नल) _Keys = नया स्ट्रिंग कलेक्शन (यह); वापसी _ कीज़; }} ICollection & lt; स्ट्रिंग & gt; IDictionary & lt; स्ट्रिंग, इंट & gt; .कीज़ ({{(_Keys == शून्य) _Keys = नया स्ट्रिंग कलेक्शन (यह); वापसी _ कीज़; }} सार्वजनिक आइकलिंग & lt; int & gt; मान {{नई नॉन-इम्प्लीमेंटेड एक्सपैशन (फेंक);}} सार्वजनिक शून्य जोड़ें (स्ट्रिंग कुंजी, इंट वैल्यू) {_InternalDictionary.Add (कुंजी, मान); } सार्वजनिक बाल में शामिल हैंकुड़ी (स्ट्रिंग कुंजी) {वापसी _InternalDictionary.ContainsKey (कुंजी); } सार्वजनिक बाल निकालें (स्ट्रिंग कुंजी) {वापसी _InternalDictionary.Remove (कुंजी); } सार्वजनिक bool TryGetValue (स्ट्रिंग कुंजी, आउट मान) {वापसी _InternalDictionary.TryGetValue (कुंजी, आउट मान); } सार्वजनिक शून्य साफ़ करें () {नया नोटिफाइड अपवाद डाल दें} } सार्वजनिक शून्य जोड़ें (कुंजी वैलपियर & lt; स्ट्रिंग, एट & gt; आइटम) {नया नॉन इमिलेटेड एक्सपेशेशन (फेंक); } सार्वजनिक बाल में शामिल हैं (कीवाल्यूअरपीयर & lt; स्ट्रिंग, एट & gt; आइटम) {नया नोटिफाइड अपेशन फेंकना; } सार्वजनिक शून्य प्रतिलिपि (कुंजीवैलपेयर & lt; स्ट्रिंग, एट एंड जी; [] सरणी, int arrayIndex) {नए NotImplementedException को फेंको; } सार्वजनिक बाल निकालें (कीवाल्यूपायर & lt; स्ट्रिंग, इंट & gt; आइटम) {नया नॉन इमिलेटेड एक्सपशन (); } सार्वजनिक int गणना {get {return_InternalDictionary.Count; }} Public bool isReadOnly {get return false; }} सार्वजनिक आईएनएनामेटर & lt; keyvaluePair & lt; स्ट्रिंग, इंट & gt; & gt; GetEnumerator () {नई NotImplementedException () को फेंकना; } IEnumerator IEnumerable.GetEnumerator () {वापसी GetEnumerator (); }} सार्वजनिक वर्ग स्ट्रिंग कलेक्शन: आइकलिपेक्शन & lt; स्ट्रिंग & gt; {निजी रीडोनली स्ट्रिंगसेट _ContainingSet; सार्वजनिक स्ट्रिंग कलेक्शन (स्ट्रिंगसेट सेट) {_ContainingSet = set; } सार्वजनिक शून्य जोड़ें (स्ट्रिंग आइटम) {यदि (_ContainingSet.ContainsKey (आइटम)) _ContainingSet [आइटम] ++; अन्य _ContainingSet [आइटम] = 1; } सार्वजनिक बाल में शामिल है (स्ट्रिंग आइटम) {वापसी _ContainingSet.ContainsKey (आइटम); } सार्वजनिक बाल निकालें (स्ट्रिंग आइटम) {नया नोटिफाइड अपवाद फेंकना; } सार्वजनिक शून्य साफ़ करें () {नया नोटिफाइड अपवाद डाल दें} } सार्वजनिक शून्य copyTo (स्ट्रिंग [] सरणी, int arrayIndex) {नया NotImplementedException फेंकना; } सार्वजनिक int काउंट {get {_ContainingSet.Count; }} Public bool isReadOnly {get return false; }} पब्लिक इनिमेटरेटर & lt; स्ट्रिंग & gt; GetEnumerator () {नई NotImplementedException () को फेंकना; } IEnumerator IEnumerable.GetEnumerator () {वापसी GetEnumerator (); }}   

निश्चित रूप से इसे लागू करने का एक बेहतर तरीका है या आपकी विशिष्ट आवश्यकताओं के समान है। इसका एकमात्र लाभ है वापस लौटा कुंजी स्ट्रिंग कॉलेक्शन पर। मैं वैसे भी माता-पिता StringSet वर्ग का उपयोग करने के लिए लोगों को अपने StringSet का उपयोग करने के लिए बाध्य करना चाहता हूं लेकिन, यह संभव है कि कोई उपरोक्त अधिरोहित व्यवहार चाहता है।

इसे इस पर कॉल करें:

  var set = new StringSet (); Var कुंजी = सेट.केए; keys.Add ( "हैलो"); keys.Add ( "हैलो"); keys.Add ( "दुनिया"); डीबग। प्रिंट ("हैलो: {0}, विश्व: {1}", ["हैलो"] सेट करें, ["विश्व"] सेट करें;    

No comments:

Post a Comment