c# - 为什么在与 null 比较时转换为对象?

标签 c# .net casting comparison null

在浏览有关 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/

相关文章:

c# - 为什么 Json.NET 解析器会自动本地化它解析的日期?

c# - Whenany() 在任务列表中退出程序

casting - Swift 中的 float 划分和类型转换

c# - EF CORE 无时间戳乐观并发

c# - 尝试使用 SetValue 时对象与目标类型不匹配

java - 多态性、转换为对象和类型删除

Python - 使用 "astype"的 Pandas 列类型转换不起作用

C# - 如何模拟 this.GetType().Assembly

c# - 营销人员自定义提交操作错误消息的 Web 表单

c# - 在 C# 中通过名称访问类变量