重载==时无限递归

本文关键字:递归 无限 重载 | 更新日期: 2023-09-27 18:15:52

我有一个类,我想重载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);
}

重载==时无限递归

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