operatorのデフォルトの実装は==
、参照によってオブジェクトを比較します。したがって、Equals (デフォルトの動作は同じ) をオーバーライドする場合は、==
and演算子も指定して、Equals を呼び出すようにする必要があります (また、 and演算子は仮想ではないため!=
、階層のすべてのクラスでそれを作成します)。==
!=
私の質問は、なぜそうなのかということです。Equals を使用する代わりに参照によってオブジェクト==
を比較するのはなぜですか? !=
そんな根本的なことには理由があるはずです。
アップデート。
コメントへ:==
基本クラスでEqualsをオーバーライドし、派生クラスでこの実装を自動的に使用できるため、Equalsに依存する必要があると想定しました(ただし、その逆はありません)。仮想ではない==
ため、実装にEquals を使用すると機能しません。==