在==覆盖中检查null

Ste*_*han 8 c#

在下面的C#片段中,我重写了该==方法._type是一些类型short.所以我实际上说当两个WorkUnitTypes相同时,两个short是相同的.

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

因为R#警告我,并且完全清楚为什么,type1/ type2可能是null,我试图用if上面的陈述来捕捉它.

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

问题:如何编写此方法"正确".我怎样才能抓住那个type1type2可能的案例null

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

SLa*_*aks 9

您正在寻找ReferenceEquals()能够直接比较的功能,绕过您的操作员过载.