fea*_*net 9 c# null casting equality
只是阅读MSDN文章上重写等式运算符这里
以下片段让我感到困惑......
// If parameter cannot be cast to Point return false.
TwoDPoint p = obj as TwoDPoint;
if ((System.Object)p == null) // <-- wtf?
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
为什么要Object在这里进行null比较?
运算符通过静态分析(和重载)应用,而不是虚拟方法(覆盖).使用强制转换,它正在进行引用相等性检查.没有演员表,它可以运行TwoDPoint操作员.我想这是为了避免在添加运算符时出现问题.
但就个人而言,我会明确地进行参考检查ReferenceEquals.