structs
और classes
के लिए समानता जांच लिखने पर आपका दृष्टिकोण क्या है?सी # समानता जांच
1) "पूर्ण" समानता जाँच बॉयलरप्लेट कोड की है कि बहुत आवश्यकता होती है (जैसे override Equals
, override GetHashCode
, सामान्य Equals
, operator==
, operator!=
)?
2) क्या आप स्पष्ट रूप से निर्दिष्ट करते हैं कि आपके वर्ग IEquatable<T>
इंटरफ़ेस मॉडल हैं? जब मैं a == b
की तरह कुछ आह्वान और मैं हमेशा दोनों Equals
और operator==
सदस्यों को लागू करना
3), मैं सही ढंग से समझ, कोई वास्तविक तरीका स्वचालित रूप से Equals
ओवरराइड लागू करने के लिए है कि वहाँ है?
^^ आपका प्रत्येक पोस्ट देखें एक सी # सीखने का अध्याय है .. :) – Dienekes
2 दूसरे कोड ब्लॉक के लिए मामूली सुझाव: 1) क्या आप '(ऑब्जेक्ट) बाएं == (ऑब्जेक्ट) दाएं' को '==' से सामान्य' बराबर 'तक नहीं ले जाना चाहिए? तो यह गति देता है (निश्चित रूप से यह निर्भर करता है, लेकिन सबसे खराब मामला मानता है) सामान्य 'समान' विधि के लिए संदर्भ समानता की जांच भी करता है? 2) आपको दूसरी नल चेक '(ऑब्जेक्ट) दाएं == नल' की आवश्यकता नहीं है क्योंकि आप अनिवार्य रूप से सामान्य 'समान' में करते हैं। मेरी पोस्ट देखें .. – nawfal
@nawfal: मुझे नहीं लगता कि जेनेरिक 'बराबर' मामले में ऐसा करने में बहुत कुछ है - यह उन मामलों में वैसे भी जल्दी होगा जहां यह सत्य है, और जिन मामलों में यह है * सच नहीं है, यह कोई लाभ के लिए एक अतिरिक्त जांच जोड़ रहा है। शून्य भाग के लिए - उसमें गतिशील प्रकार की जांच की आवश्यकता होगी। हां, आप दोनों के लिए बहस कर सकते हैं - लेकिन मैं दो साल पहले जो लिखा था उससे काफी खुश हूं ... –