【问题标题】:Why is Object.Equals(new Object(), new Object()) false?为什么 Object.Equals(new Object(), new Object()) 是假的?
【发布时间】:2012-06-02 11:06:47
【问题描述】:

为什么下面这段代码是false

Object.Equals(new Object(), new Object())

【问题讨论】:

    标签: c# boolean reference-type


    【解决方案1】:

    来自MSDN

    Equals 的默认实现支持引用相等 引用类型和值类型的按位相等。参考 相等意味着被比较的对象引用引用 同一个对象。按位相等意味着被比较的对象有 相同的二进制表示。

    换句话说,您正在创建两个相同类型的不同对象,并查看它们是否是完全相同的对象,而事实并非如此。

    【讨论】:

      【解决方案2】:

      根据MSDN Documentation

      Equals 的默认实现支持引用类型的引用相等,以及值类型的按位相等。 引用相等意味着被比较的对象引用引用同一个对象。按位相等意味着被比较的对象具有相同的二进制表示。

      请注意,派生类型可能会覆盖 Equals 方法以实现值相等。值相等意味着被比较的对象具有相同的值但不同的二进制表示。

      您正在创建两个不同的对象。

      【讨论】:

        猜你喜欢
        • 2011-07-13
        • 2014-06-21
        • 2014-02-10
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 2012-03-10
        • 2016-09-05
        • 2011-08-12
        相关资源
        最近更新 更多