4

我有一个类,我想在 c# 中重载 == 运算符。我已经有一个正常工作的 .Equals 覆盖。当我尝试使用我的 == 运算符时,它在我的对象(Person)上给了我一个空引用异常。如果我尝试检查它是否为空,它会依次调用同一个运算符来检查它是否为空并创建一个无限循环。这似乎是一个巨大的缺陷,我想不出正确的方法来做到这一点。

public static bool operator ==(Person person, object obj)
{
    return person == null ? person.Equals(obj) : false;
}

public static bool operator !=(Person person, object obj)
{
    return !(person == obj);
}
4

1 回答 1

9

用于(object)person == null强制它使用 Object 的 == 运算符(或使用ReferenceEquals)。请参阅http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

于 2013-05-29T20:17:13.280 回答