मैं नहीं दिख रहा है आपको इसकी आवश्यकता क्यों चाहते हैं। आप 3 अलग अलग मदों के लिए डिफ़ॉल्ट GetHashCode
के आधार पर एक हैश-कोड बनाने के लिए चाहते हैं, तो बस का उपयोग करें:
int h1 = lastName.GetHashCode();
int h2 = firstName.GetHashCode();
int h3 = gender.GetHashCode();
return (((h1 << 5) + h1)^(((h2 << 5) + h2)^h3));
सुंदर है कौन सा:
Tuple.Create(lastName, firstName, gender).GetHashCode()
कि के बराबर करने के लिए नीचे उबाल कर देंगे इस तरह के एक सामान्य उद्देश्य संयोजन के लिए उचित है।
इसी तरह
:
Tuple.Create(lastName, firstName, gender).Equals(Tuple.Create(lastName2, firstName2, gender2))
बुला के बराबर करने के लिए नीचे उबाल चाहेंगे:
return ((lastName == null && lastName2 == null) || (lastName != null && lastName.Equals(lastName2)))
&& ((firstName == null && firstName2 == null) || (firstName != null && firstName.Equals(lastName2)))
&& ((gender == null && gender2 == null) || (gender != null && gender.Equals(lastName2)));
फिर से, के बारे में के रूप में अच्छा आप उम्मीद कर सकता है के रूप में।
स्रोत
2012-01-27 16:23:09
+1: GetHashCode(), Equals(), और ToString() – millimoose
को लागू करने के लिए tuples और अनाम प्रकार बहुत अच्छे हैं शॉर्टकट के रूप में 'टुपल' कक्षाओं का उपयोग करके अच्छा विचार। लेकिन ध्यान दें कि 'Tuple.Create (...)। बराबर (Tuple.Create (...))' गुवा की 'बराबर' विधि के बराबर नहीं है - जो कि 'ऑब्जेक्ट' होगा। एक्वाल्स (x, y) '। – LukeH
@LukeH, ठीक है क्योंकि हमारे पास पहले से ही है, और हमारे पास यह भी है, इसका मतलब है कि हम अमरूद से बेहतर कर सकते हैं :) –