【问题标题】:Object.Equals(obj1, obj2) vs obj1.Equals(obj2)?Object.Equals(obj1, obj2) vs obj1.Equals(obj2)?
【发布时间】:2009-10-05 00:53:53
【问题描述】:

假设这两个对象都不是值类型,并且都表示覆盖了 Equals(...) 方法的类型,那么两者之间是否存在任何功能差异:

  • 致电obj1.Equals(obj2)
  • 致电Object.Equals(obj1, obj2) ...或者它们在功能上是否相同?

我正在阅读的 Apress 书(Pro C# 2008)实际上非常好,将这种方法(以及 ReferenceEquals(...) )称为“(非常有用的)静态方法”,但我正在努力看看这里的好处。

对于ReferenceEquals(...),我可以看到该实用程序,因为它仍然能够确定两个对象是否引用同一个对象(无论Equals(...) 方法和== 运算符是否已被覆盖)。

对于另一个...不是那么多;我只是在这里遗漏了什么吗?

【问题讨论】:

    标签: c# inheritance object equals


    【解决方案1】:

    Object.Equals(obj1, obj2):

    如果obj1和obj2是同一个引用,返回true

    如果 obj1 或 obj2 为 null,则返回 false

    否则返回 obj1.Equals(obj2)

    【讨论】:

    • 我不明白我们为什么要使用 obj1.Equals(obj2)。
    【解决方案2】:

    想象一下,在第一种情况下,obj1 是否为空。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 2013-09-26
      • 1970-01-01
      • 2012-07-30
      • 2019-09-05
      • 2016-12-13
      • 2018-04-27
      • 1970-01-01
      相关资源
      最近更新 更多