我想知道 CLR 类型是否会从以下返回不同的结果:
Object.Equals(objA, objB)
objA.Equals(objB)
(objA == objB)
我确实意识到,在 CLR 之外,有人可以轻松地实现IEqualtable
Equals 并不正确地重载 == 运算符。我不关心人们不正确地实施这些。我关心的是类(包括 String、Int32 等)以不同的方式实现这 3 个。
此外,如果可能的话,哪一个应该是用于整体比较(全面)的。我想知道这是因为我遇到了一个使用Object.Equals(objA, objB)
整个视图模型而不是其他两个的文件。
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;
...
}
}