के रूप में किसी ऑब्जेक्ट का उपयोग करना यदि मैं Dictionary
के लिए ऑब्जेक्ट्स का उपयोग करना चाहता हूं, तो मुझे उन्हें किसी विशिष्ट तरीके से तुलना करने के लिए ओवरराइड करने के लिए किन तरीकों की आवश्यकता होगी?एक सामान्य शब्दकोश कुंजी
मैं एक एक वर्ग जो गुण है है कहते हैं:
class Foo {
public string Name { get; set; }
public int FooID { get; set; }
// elided
}
और मैं एक बनाना चाहते हैं:
Dictionary<Foo, List<Stuff>>
मैं एक ही समूह के लिए विचार किया जाना ही FooID
साथ Foo
वस्तुओं चाहते हैं। Foo
कक्षा में मुझे किन तरीकों को ओवरराइड करने की आवश्यकता होगी?
संक्षेप में: मैं Foo
ऑब्जेक्ट्स द्वारा समूहीकृत सूचियों में Stuff
ऑब्जेक्ट्स को वर्गीकृत करना चाहता हूं। Stuff
ऑब्जेक्ट्स को उनकी श्रेणी में जोड़ने के लिए FooID
होगा।
+1 और मेरा मतलब इस धागे को हाइजैक करने का नहीं है, लेकिन मैं इस धारणा के तहत था कि GetHashCode() को FooId.GetHashCode() वापस करना चाहिए। क्या यह सही पैटर्न नहीं है? –
@ केन - ठीक है, इसे केवल एक int वापस करने की आवश्यकता है जो आवश्यक सुविधाएं प्रदान करता है। कौन सा FooID बस के साथ ही FooID.GetHashCode() करेगा। एक कार्यान्वयन विस्तार के रूप में, Int32.GetHashCode() "इसे वापस करें;" है। अन्य प्रकारों (स्ट्रिंग इत्यादि) के लिए, फिर हाँ: .GetHashCode() बहुत उपयोगी होगा। –
धन्यवाद! मैं IEqualityComparer के साथ गया क्योंकि यह केवल डिकारियन के लिए था कि मुझे अतिरंजित तरीकों की आवश्यकता थी। –
Dana