我将==和!=的运算符添加到一个类中,但是当该类型的对象作为泛型参数传递时,似乎不会调用它们。当我查看反编译代码时,它看起来像(对象)a ==(对象)b。
在这种情况下是否可以使用运算符重载? THX !!
[TestMethod]
public void Test() {
var a = new OperatorTest(13);
var b = new OperatorTest(13);
Assert.IsTrue(a==b);
TestGenerics<OperatorTest>(a,b);
}
void TestGenerics<T>(T a, T b) where T: class {
Assert.IsTrue(a == b); //THIS FAILS!
}
class OperatorTest {
private readonly int _value;
public OperatorTest(int value) {
_value = value;
}
public static bool operator ==(OperatorTest x, OperatorTest y) {
return x._value == y._value;
}
public static bool operator !=(OperatorTest x, OperatorTest y) {
return x._value != y._value;
}
}