可能重复:
在C#中不能将运算符==应用于泛型类型吗?
我有以下通用类,编译器抱怨"运算符'!='不能应用于类型为'TValue'和'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()
。但由于我需要在结构体和类中都使用它,如果能够避免这种情况,我会非常高兴。因此问题是,如何比较同一但未受限制的泛型类型的两个元素是否相等?