我正在编写一种算法,要求用户创建自己的类,该类继承自我定义的类。但是,该算法要求用户覆盖C#标准库中的Equals和GetHashCode函数。
我可以强制从我的类继承的类来实现GetHashCode和Equals函数吗?
public abstract int GetHashCode();
在我的基类中编写它不是一个选项,因为我的基类从它的父级继承了GetHashCode,它已经实现了。
答案 0 :(得分:12)
这就是你要找的东西。由于你的课程是抽象的,你几乎可以毫无问题地做到这一点。
public abstract override int GetHashCode();
尽管它派生自其他一些类,但这使得你的子类必须覆盖这个方法。
答案 1 :(得分:3)
您可以创建2个新的方法,这些方法将是抽象的,并将从您的班级GetHashCode
和Equals
调用。
示例:
public abstract ParentClass {
public abstract int MyGetHashCode();
public override int GetHashCode(){
return MyGetHashCode();
}
// same thing for Equals
}
答案 2 :(得分:0)
在你班上:
public override bool Equals(object obj)
{
throw new System.NotImplementedException();
}
public override int GetHashCode()
{
throw new System.NotImplementedException();
}
这意味着如果它们不覆盖它,则函数将因异常而失败。这迫使他们覆盖它以使其发挥作用。