在浏览有关 Equals 覆盖的 MSDN 文档时,有一点引起了我的注意。
关于this specific page的例子,进行了一些空检查,并且在进行比较时将对象强制转换为 System.Object 类型:
public override bool Equals(System.Object obj)
{
// If parameter is null return false.
if (obj == null)
{
return false;
}
// If parameter cannot be cast to Point return false.
TwoDPoint p = obj as TwoDPoint;
if ((System.Object)p == null)
{
return false;
}
// Return true if the fields match:
return (x == p.x) && (y == p.y);
}
是否有使用此强制转换的特定原因,或者它只是本示例中遗忘的一些“无用”代码?
最佳答案
类型可以重载 == 运算符。转换为对象可确保使用原始定义。
关于c# - 为什么在与 null 比较时转换为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407058/