在下面的C#代码片段中,我重写了
因为 R# 给了我警告,并且完全清楚为什么,
==
方法。_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
可能为空,我正在尝试通过上面的 if
语句捕获它。
现在我得到了一个 StackOverflowException
,这完全是有道理的,因为我实际上调用了重载方法。
问题:如何编写这个方法才是“正确”的。如何捕获 type1
或 type2
可能为 null
的情况?
我最好的猜测:也许我只是误用了 ==
,应该使用 Equals
重载来检查相等性。但我仍然认为问题存在。那么我的推理错误在哪里?
ReferenceEquals
存在。这实际上就是答案。谢谢。 - Stephan