==
オペレーターは実際にC#でどのように機能しますか?クラスAのオブジェクトを比較するために使用された場合、 Aのすべてのプロパティを一致させようとしますか、それとも同じメモリ位置(または他の何か)へのポインタを探しますか?
架空の例を作成しましょう。Twitter APIを利用するアプリケーションを作成しています。このアプリケーションには、Tweetクラスがあり、テキスト、送信者、日付と時刻、ソースなど、単一のツイートのすべてのプロパティがあります。クラスTweetのオブジェクトを比較して同等性を確認する場合、私はただ使うことができます:
Tweet a, b;
if (a == b)
{
//do something...
}
それは、 aとbの間のTweetクラスのすべてのプロパティの同等性をチェックしますか?
そうでない場合、正しいアプローチは==
、すべてのフィールドの同等性を明示的にチェックするために演算子をオーバーロードすることですか?
更新:最初の2つの答えから、私は次のように仮定するのが正しいですか?
==
演算子またはEqualsメソッドがクラスに対してオーバーロードされていない場合、オブジェクト==
クラスの演算子が使用されます。- オブジェクトクラスの
==
演算子は、メモリ位置が等しいかどうかをチェックします。 - このタスクを実行するには、
==
演算子またはEqualsメソッドをオーバーロードする必要があります。 - オーバーロードでは、プロパティの等価性を手動でチェックする必要があるため、半自動で、たとえばループでそれを行う方法はありません。
更新#2: Yuriyは、リフレクション==
を使用して演算子のプロパティの等価性をチェックできるとコメントしました。これはどのように行うことができますか?サンプルコードを教えてください。ありがとう!