CLRタイプが次とは異なる結果を返すかどうか疑問に思っています。
Object.Equals(objA, objB)
objA.Equals(objB)
(objA == objB)
私は、CLRの外部で、誰かがIEqualtable
Equalsを簡単に実装し、==演算子を不適切にオーバーロードする可能性があることを認識しています。私はこれらを不適切に実装している人々には関心がありません。私が懸念しているのは、クラス(String、Int32などを含む)がこれら3つを異なる方法で実装していることです。
また、可能であれば、全体(全体)の比較に使用するものをどれにする必要があります。Object.Equals(objA, objB)
他の2つではなくビューモデル全体を使用するファイルに出くわしたので、これは疑問に思います。
private string _name;
public string Name
{
get { return _name; }
set
{
if (Equals(_name, value)) return;
...
}
}
private int _id;
public int Id
{
get { return _id; }
set
{
if (Equals(_id, value)) return;
...
}
}
private Object _obj;
public Object TheObject
{
get { return _obj; }
set
{
if (Equals(_obj, value)) return;
...
}
}