में निम्न के लिए जांचें निम्नलिखित सी # स्निपेट में मैं ==
विधि को ओवरराइड करता हूं। _type
कई प्रकार के short
है। तो मैं वास्तव में कह रहा हूं कि दो WorkUnitType
एस वही हैं जब उन दो short
एस समान हैं।== ओवरराइड
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
क्योंकि आर # मुझे चेतावनी देते हैं, और यह पूरी तरह स्पष्ट नहीं है कि, कि type1
/type2
संभावित अशक्त हो सकता है मैं ऊपर if
बयान के साथ कि पकड़ने के लिए कोशिश कर रहा हूँ है।
अब मुझे StackOverflowException
मिल रहा है जो पूरी तरह से समझ में आता है क्योंकि मैं वास्तव में ओवरराइड को कॉल कर रहा हूं।
प्रश्न: मैं इस विधि को "सही" कैसे लिखूं। मैं इस मामले को कैसे पकड़ सकता हूं कि type1
या type2
null
हो सकता है?
मेरे सर्वोत्तम अनुमान: हो सकता है कि मैं सिर्फ यहाँ ==
का दुरुपयोग कर रहा हूँ और समानता के लिए जाँच Equals
ओवरराइड के साथ किया जाना चाहिए। लेकिन फिर भी मुझे लगता है कि समस्या मौजूद है। तो तर्क में मेरी त्रुटि कहां है?
मुझे नहीं पता था कि 'ReferenceEquals' मौजूद है। यह वास्तव में जवाब है। धन्यवाद। – Stephan