gpt4 book ai didi

c# - 检查 == override 中的 null

转载 作者:太空狗 更新时间:2023-10-29 18:21:54 25 4
gpt4 key购买 nike

在下面的 C# 片段中,我覆盖了 == 方法。 _type 是一个short 类型的数字。所以我实际上是说,当这两个 short 相同时,这两个 WorkUnitType 是相同的。

public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}

因为 R# 警告我,而且完全清楚为什么 type1/type2 可能为 null 我正试图用 捕捉它if 上面的语句。

现在我得到了一个 StackOverflowException,这完全有意义,因为我实际上是在调用覆盖。

问题:如何“正确”地编写此方法。我怎样才能捕捉到 type1type2 可以是 null 的情况?

我最好的猜测:也许我只是在这里误用了 == 并且应该使用 Equals 覆盖来检查是否相等。但我仍然认为问题存在。那么我的推理错误在哪里呢?

最佳答案

您正在寻找 ReferenceEquals() 函数,它将直接比较,绕过您的运算符重载。

关于c# - 检查 == override 中的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223619/

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