4

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

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

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

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

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

4

3 回答 3

8

想象一下,如果在第一种情况下obj1为空。

于 2009-10-05T00:55:03.440 回答
8

Object.Equals(obj1, obj2):

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

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

否则返回 obj1.Equals(obj2)

于 2009-10-05T01:01:27.623 回答
0

看看http://msdn.microsoft.com/en-us/library/w4hkze5k.aspx

于 2009-10-05T01:05:36.037 回答