संभव डुप्लिकेट:
Can’t operator == be applied to generic types in C#?समानता के लिए समान लेकिन अनियंत्रित जेनेरिक प्रकार के दो तत्वों की तुलना कैसे करें?
मैं निम्नलिखित सामान्य वर्ग और संकलक मिल गया है शिकायत है कि "Operator '!=' cannot be applied to operands of type 'TValue' and 'TValue'
" (CS0019 देखें):
public class Example<TValue>
{
private TValue _value;
public TValue Value
{
get { return _value; }
set
{
if (_value != value) // <<-- ERROR
{
_value= value;
OnPropertyChanged("Value");
}
}
}
}
मैं तो TValue
से class
को बाधित करें, मैं Object.Equals()
का उपयोग कर सकता हूं। चूंकि मुझे दोनों को structs और कक्षाओं के लिए इसकी आवश्यकता है, इसलिए अगर मैं इससे बच सकता हूं तो मैं बहुत खुश हूं।
तो सवाल यह है कि, मैं समानता के लिए समान लेकिन अनियंत्रित जेनेरिक प्रकार के दो तत्वों की तुलना कैसे कर सकता हूं?
आप मूल्यों के लिए उपयोग क्यों नहीं कर सकते हैं? –
डिफ़ॉल्ट रूप से, यदि आप संदर्भ वस्तुओं पर "object.Equals (a, b)" को कॉल करते हैं, तो "ऑब्जेक्ट। रेफरेंस एक्वाल्स (ए, बी)" कहा जाएगा। – TcKs
@ टीसीके: डिफ़ॉल्ट रूप से, आप यह सुनिश्चित नहीं कर सकते कि व्युत्पन्न कक्षा में बराबर बराबर हो गया है या नहीं। – leppie