न्यूनतम आवश्यकता यह है कि हैश कोड किसी दिए गए मान के लिए समान होना चाहिए। तो, यह कार्यान्वयन काम करता है, लेकिन वितरण भयानक है:
public override int GetHashCode() {
return 1;
}
सबसे अच्छा काम करने के लिए, हैश कोड वस्तु में सभी प्रासंगिक डेटा पर विचार करना चाहिए और के रूप में समान रूप से पूर्णांक सीमा के भीतर संभव के रूप में वितरित किया जा।
एक कार्यान्वयन जो सभी सदस्यों पर विचार करता है, लेकिन सिस्टम में बहुत अच्छा वितरण नहीं देता है। ड्रॉइंग.पॉइंट संरचना। है
public override int GetHashCode() {
return this.X^this.Y;
}
एक तरह से एक बेहतर वितरण प्राप्त करने के लिए एक प्रमुख द्वारा एक सदस्य गुणा करने के लिए: यह सदस्यों में बिट्स गठबंधन करने के लिए, जिसका अर्थ है सभी बिंदुओं जहां एक्स और वाई के बराबर हैं हैश कोड शून्य मिलता है कि XOR का उपयोग करता है संख्या और अगले सदस्य जोड़ने के लिए, के रूप में की जरूरत दोहरा:
public override int GetHashCode() {
return ((this.Value1 * 251) + this.Value2) * 251 + this.Value3;
}
एक ही विधि, सरल यादृच्छिक जनरेटर में इस्तेमाल किया गया है के रूप में यह मान बहुत अच्छी तरह से फैला देता है।
कुछ वाकई अच्छे अंक हैं। धन्यवाद! – dotnetdev