8

我正在编写一个算法,它要求用户创建自己的类,该类继承自我定义的类。但是,该算法要求用户覆盖 C# 标准库中的 Equals 和 GetHashCode 函数。

我可以强制从我的类继承的类实现 GetHashCode 和 Equals 函数吗?

public abstract int GetHashCode();

在我的基类中编写它不是一种选择,因为我的基类从它的父类继承 GetHashCode,它已经在其中实现。

4

3 回答 3

14

这就是你要找的。由于您的课程是抽象的,您几乎可以毫无问题地做到这一点。

public abstract override int GetHashCode();

尽管它是从其他类派生的,但这使得您的子类必须覆盖此方法。

于 2013-11-05T14:23:58.337 回答
3

GetHashCode您可以创建 2 个新方法,这些方法将是抽象的,将从Equals您的类中调用。

例子:

public abstract ParentClass {
    public abstract int MyGetHashCode();

    public override int GetHashCode(){
        return MyGetHashCode();
    }

    // same thing for Equals
}
于 2013-11-05T14:24:38.737 回答
0

在你的课堂上:

public override bool Equals(object obj)
{
    throw new System.NotImplementedException();
}

public override int GetHashCode()
{
    throw new System.NotImplementedException();
}

这意味着如果他们不覆盖它,该函数将因异常而失败。这迫使他们覆盖它以使其正常工作。

于 2013-11-05T14:24:17.310 回答