gpt4 book ai didi

c# - 重载时无限递归==

转载 作者:太空狗 更新时间:2023-10-30 00:32:35 24 4
gpt4 key购买 nike

我有一个类,我想在 C# 中重载 == 运算符。我已经有一个可以正常工作的 .Equals 覆盖。当我尝试使用我的 == 运算符时,它在我的对象(人)上给了我一个空引用异常。如果我尝试检查它是否为 null,它将依次调用同一个运算符来检查它是否为 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);
}

最佳答案

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

关于c# - 重载时无限递归==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com