只需阅读有关覆盖相等运算符的 msdn 文章here
下面的片段让我困惑......
// If parameter cannot be cast to Point return false.
TwoDPoint p = obj as TwoDPoint;
if ((System.Object)p == null) // <-- wtf?
{
return false;
}
为什么有一个演员阵容Object
在这里执行null
比较?
运算符通过静态分析(和重载)而不是虚拟方法(覆盖)来应用。通过强制转换,它正在执行引用相等性检查。没有演员表,它可以运行TwoDPoint
操作员。我想这是为了避免添加运算符时出现问题。
不过,就我个人而言,我会明确进行参考检查ReferenceEquals
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)