我已经得到这个权利了一些问题,所以我想问问,如果任何人有这是否是实现自定义不可变类Equals方法和平等/不平等运营商的有效途径的任何反馈。这些操作员被我的程序非常频繁地调用,所以我想确保让他们正确。这是实现Equals和平等/不平等运营良好/有效的成语?
class MyObj
{
public static bool operator ==(MyObj a, MyObj b)
{
if (!object.ReferenceEquals(a, null))
return a.Equals(b);
else if (!object.ReferenceEquals(b, null))
return b.Equals(a);
else
// both are null
return true;
}
public static bool operator !=(MyObj a, MyObj b)
{
if (!object.ReferenceEquals(a, null))
return !a.Equals(b);
else if (!object.ReferenceEquals(b, null))
return !b.Equals(a);
else
// both are null
return false
}
public override bool Equals(object obj)
{
return this.Equals(obj as MyObj);
}
public bool Equals(MyObj obj)
{
if (object.ReferenceEquals(obj, null))
return false;
else
return (obj.FieldOne == this.FieldOne &&
obj.FieldTwo == this.FieldTwo && ...);
}
}
这是正确的,我会修复错误。谢谢。 – 2009-10-31 16:27:55