HashSet<T>
में HashSet
Equals()
और
GetHashCode()
ओवरराइड, मैं एक वस्तु एक और एक अन्य वस्तु ए 'कि
नहीं बराबर पहचान द्वारा रहे हैं, लेकिन हो सकता है
Equals()
रिटर्न
true
और
GetHashCode()
रिटर्न ही हैश कोड, जिसके लिए।
अब, ए हैश सेट में है, मैं ए में ओ (1) दिया ए '(जो हैश सेट के परिप्रेक्ष्य से ए के बराबर है) को पुनः प्राप्त करना चाहता हूं।
var a = new MyClass("A");
var a_prime = new MyClass("A");
Debug.Assert(a.Equals(a_prime));
Debug.Assert(a.GetHashCode() == a_prime.GetHashCode());
var set = new HashSet<MyClass>();
set.Add(a);
Debug.Assert(set.Contains(a_prime));
// This:
var retrieved_a = set.Get(a_prime);
यह कैसे करें?
(ध्यान दें कि this जवाब मैं तलाश कर रहा हूँ नहीं है, और this सभी में कोई जवाब नहीं है।)
कुछ पृष्ठभूमि जानकारी: मैं प्रशिक्षु अपने ही करने के लिए सेट का उपयोग करना चाहते वही तरीके से सी # इंटर्न स्ट्रिंग्स: समान वस्तुओं को केवल एक उदाहरण की आवश्यकता होती है। इस तरह से मैं इस तरह के ऑब्जेक्ट में मेटाडेटा जोड़ सकता हूं और सुनिश्चित कर सकता हूं कि मेटाडेटा के बिना कहीं भी कोई अन्य समान उदाहरण नहीं है।
क्यों नहीं 'ए' से' ए' में एक शब्दकोश मैपिंग का उपयोग न करें? –
संभावित डुप्लिकेट [हैशसेट से वास्तविक आइटम कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/7760364/how-to-retrieve-actual-item-from-hashsett) –
nawfal
एक और [कैसे उपयोग करें -इस संदर्भ-मूल्यों की एक HashSet-बिना-गणन?] (http://stackoverflow.com/questions/7290443/how-to-access-the-reference-values-of-a-hashsettvalue-without - गणना?) – nawfal