我有
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# - 如何调用 == 运算符来调用 child 的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915194/