c# - 如何调用 == 运算符来调用 child 的实现?

标签 c# .net inheritance operator-keyword overriding

我有

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/

相关文章:

.net - 在 .NET 中将文本文件的内容读取为字符串的最佳方法是什么?

c# - 在哪里放置授权方法?

c# - .NET v 5.0 缺少 Amazon S3 SelectObjectContent 支持?

.net - TeamCity 的重复项查找器中重复复杂性设置的度量单位是什么?

.net 4 MemoryCache 泄漏?

c++ - 只实例化派生类一次是糟糕的 OOP 吗?

c# - 使用 String 类型的泛型类并收到错误 'string' 必须是非抽象类型

c# - 在不触发事件的情况下设置 WPF 依赖属性

java - JPA - InheritanceType.Joined 生成错误的表

Python 类继承 : dict how to pickle(save, 加载)