クラスがObjectに対して定義された動作を明確にオーバーライドしない限り、ReferenceEqualsと==は同じことを行います...参照を比較します。
プロパティセッターでは、私は一般的にパターンを使用しました
private MyType myProperty;
public MyType MyProperty
{
set
{
if (myProperty != value)
{
myProperty = value;
// Do stuff like NotifyPropertyChanged
}
}
}
ただし、Entity Frameworkによって生成されたコードでは、if
ステートメントは次のように置き換えられます。
if (!ReferenceEquals(myProperty, value))
ReferenceEqualsの使用はより明確です(すべてのC#プログラマーが、オーバーライドされない場合でも==が同じことを行うことを知っているわけではないと思います)。
2つのif-variantの間に私を逃れている違いはありますか?彼らはおそらく、POCO設計者がオーバーライドした可能性を説明してい==
ますか?
つまり、オーバーライド==
していない場合、?の代わりに!=を使用して保存しますReferenceEquals()
か?