Bri*_*don 3 c# oop inheritance
假设您正在编写原始C#Object类,并且您需要以下功能:
object1 == object2 将比较引用,除非重写此运算符object1 != object2 将始终返回对象的ACTUAL的反转 object1 == object2因此,例如,如果我有一个使用ear length作为其equals方法的Bunny类(派生自Object),那么Object如果bunnies具有不同的ear长度,则notequals方法(继承自)应该返回true.
我看到的问题是,如果我写我的Object课:
public partial class Object {
public virtual bool Equals(Object o2) {
return (this === o2);
}
public bool NotEquals(Object o2) {
return !this.Equals(o2);
}
}
Run Code Online (Sandbox Code Playgroud)
那么看起来这个定义会将ObjectNotEquals 绑定到's Equals,而不是实际派生类的equals.
有没有什么方法可以在不以任何方式修改C#本身的情况下工作?我并不在乎C#中的可能性,但我关心是否有一些OOP原则告诉我我不应该期待这种事情能够发挥作用.
此外,我不确定这是否是这个问题的基础,但是想法是NotEquals也是虚拟的,所以它也可以被希望它们o1 != o2与之不同的派生类所覆盖!(o1 == o2).这个问题的灵感来自最近的讨论.
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |