2013-02-01 16 views
34

ग्रहण में, जब मैं जावा में कोड करता हूं, तो मस्तिष्क शक्ति का उपभोग किए बिना hashCode() और equals() के मूल, कुशल और बग मुक्त कार्यान्वयन को स्वत: उत्पन्न करने की सुविधा होती है।क्या रीशेर्पर के साथ GetHashCode और Equals को स्वतः उत्पन्न करने का कोई तरीका है?

क्या विजुअल स्टूडियो में या रीशेर्पर में अंतर्निहित सुविधा है?

+0

बस प्रकार के बराबर होती है और टैब दबाएं। –

उत्तर

51

हां, रिशेर्पर ऐसा कर सकता है। (Alt + इन्स सेटिंग या Resharper निर्भर करता है -> संपादित -> कोड उत्पन्न) अपने प्रकार के अंदर कर्सर के साथ, "कोड जेनरेट करें" मेनू खोलें, और "समानता के सदस्यों":

Generate code menu

यह (जैसे अपने प्रकार लागू करना चाहिए IEquatable<T>) एक विंडो है जहां आप चुन सकते हैं सदस्यों समानता के लिए उपयोग किया जाता है को खोलता है, उत्पन्न कोड के बारे में कुछ विकल्पों के साथ:

Generate equality members window

आप दो गुणों के साथ एक सरल प्रकार से शुरू करते हैं:

class Person 
{ 
    public string FirstName { get; private set; } 
    public string LastName { get; private set; } 
} 

तब उत्पन्न कोड की तरह कुछ लग सकता है:

class Person : IEquatable<Person> 
{ 
    public string FirstName { get; private set; } 
    public string LastName { get; private set; } 

    public bool Equals(Person other) 
    { 
     if (ReferenceEquals(null, other)) 
      return false; 
     if (ReferenceEquals(this, other)) 
      return true; 
     return string.Equals(FirstName, other.FirstName) && string.Equals(LastName, other.LastName); 
    } 

    public override bool Equals(object obj) 
    { 
     if (ReferenceEquals(null, obj)) 
      return false; 
     if (ReferenceEquals(this, obj)) 
      return true; 
     if (obj.GetType() != this.GetType()) 
      return false; 
     return Equals((Person)obj); 
    } 

    public override int GetHashCode() 
    { 
     unchecked 
     { 
      return ((FirstName != null ? FirstName.GetHashCode() : 0) * 397)^(LastName != null ? LastName.GetHashCode() : 0); 
     } 
    } 
} 
0

जब से तुम यह विजुअल स्टूडियो ऐसा कर सकते हैं, तो पूछा: XI.2017 के बाद से यह फिनली कुछ उपयोगी उत्पन्न कर सकता है।

सीटीआर + का उपयोग करना। वर्ग के अंदर और चुनने "बराबर है और GetHashCode उत्पन्न करें"

देखें https://stackoverflow.com/a/48441971/4547594

संबंधित मुद्दे

 संबंधित मुद्दे