在下面的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完全有意义的东西,因为我实际上是在调用覆盖.
问题:如何编写此方法"正确".我怎样才能抓住那个type1或type2可能的案例null?
我最好的猜测:也许我只是==在这里滥用,并且应该使用Equals覆盖来检查是否相等.但我仍然认为问题存在.那么我在推理中的错误在哪里?