运算符的默认实现==
按引用比较对象。因此,当您覆盖 Equals (默认行为相同)时,您还必须指定==
and!=
运算符,以便它们调用 Equals (并使其在每个层次结构类中,因为==
and!=
运算符不是虚拟的)。
我的问题是为什么会这样?为什么要通过引用而不是使用 Equals 来比较对象==
?!=
我想这样一个基本的事情应该是有原因的。
更新。
评论:我假设==
应该依赖于 Equals(但反之亦然),因为您可以在基类中覆盖 Equals 并在派生类中自动使用此实现。==
如果 Equals在其实现中使用它就行不通,因为==
它不是虚拟的。