我有
public abstract class DataClass
{
public static bool operator ==(DataClass left, DataClass right)
{
return left.Equals(right);
}
}
这就是发生的事情
object left = new DataClass();
object right = new DataClass();
bool expected = true;
bool actual;
actual = ((DataClass)left) == ((DataClass)right);
Assert.AreEqual(expected, actual); // passes
actual = left == right;
Assert.AreEqual(expected, actual); // fails
如何使它称为正确的实现,而无需显式转换?
最佳答案
static
方法不受多态行为的影响(即不能被覆盖)。强制转换是必需的。
有关可能的解决方法,请参见以下相关问题:Override a static method
最有可能的是,您将不得不求助于创建实例方法或替代Equals
。
关于c# - 如何调用==运算符来调用子代的实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8915194/