可能性の重複:
Why ReferenceEquals and == operator behave different from Equalsなぜデフォルト==実装は等価を呼び出さないのですか?
==
オペレータのデフォルトの実装では、参照によってオブジェクトを比較します。したがってEqualsをオーバーライドすると(デフォルトの動作は同じです)、==
と!=
演算子を指定して、Equalsを呼び出すようにする必要があります(演算子が仮想ではない==
と!=
のように階層の各クラスで行います)。
私の質問はなぜそうですか? ==
と!=
は、Equalsを使用する代わりに参照によってオブジェクトを比較するのはなぜですか?そんな根本的な理由があるはずです。
コメント:私は==
は、ベースクラスでEqualsをオーバーライドし、派生クラスでこの実装を自動的に使用できるので、Equals(ただしその逆はありません)に依存すると仮定しました。 ==
は仮想ではないため、Equalsがその実装で==
を使用した場合は動作しません。
「同等」は何を使用する必要がありますか? – Oded
デザインによって、Javaに似て、本当に。 –
@JamesMichaelHare、デザインの決定はどこからも来ていません... – SiberianGuy