c# - Difference between string.GetHashCode and IEqualityComparer<string>.Default.GetHashCode -


मैं अपने डेटा के साथ distinct () का उपयोग करना चाहूंगा, जिसे IEnumerable & lt; KeyValuePair & lt; IdentType, स्ट्रिंग & gt; & gt; । इस मामले में, मुझे अपना खुद का IEqualityComparer लागू करना होगा और मेरा प्रश्न है:

क्या लागूकरणों के बीच में कोई अंतर है?

  सार्वजनिक Int GetHashCode (कीवालपेअर & lt; पहचान प्रकार, स्ट्रिंग & gt; obj) {वापसी समानता कम्परियर & lt; स्ट्रिंग & gt; डीफॉल्ट.गेटहाशकोड (obj.Value); }  

और

  सार्वजनिक int GetHashCode (KeyValuePair & lt; IdentType, string & gt; obj) {return obj.Value.GetHashCode (); }  

आपके दो विधियों में केवल एक छोटा सा अंतर है।

< पी> क्लास इम्प्रेशमेंट IEquateable & lt; T & gt; (जो स्ट्रिंग करता है) प्रकार की एक श्रेणी वापस करेगा। इसलिए कि GetHashCode (obj.Value) को कॉल किया जाता है

  सार्वजनिक ओवरराइड इंट होशकोड (टी ओबीजे) {if (obj == null) 0; वापसी obj.GetHashCode (); }  

जो आप obj.Value.GetHashCode (); को कॉल करने के समान है, सीधे इस तथ्य को छोड़कर कि यदि आपके पास एक नल स्ट्रिंग डिफ़ॉल्ट तुलना है 0 लौट आएंगे और सीधे कॉल संस्करण एक रिक्त संदर्भ अपवाद निकाल देंगे।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -