我有一个在c#中想要重载“==”运算符的类。我已经有了一个有效的.Equals覆盖。当我试图使用我的“==”运算符时,它给我的对象(Person)抛出一个空引用异常。如果我尝试检查它是否为空,它会调用相同的运算符来将其与null进行比较并创建无限循环。这似乎是一个巨大的缺陷,我找不到正确的方法来解决它。
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);
}
null
进行比较时,应使用!object.ReferenceEquals(person, null)
来确保(并明确!)您正在检查引用相等性。 - dlev