views:

272

answers:

3

Assuming both objects are not value types and both represent types which have overridden the Equals(...) method, is there any functional difference between:

  • Calling obj1.Equals(obj2)
  • Calling Object.Equals(obj1, obj2) ...or are they functionally the same?

The Apress book I'm reading (Pro C# 2008), which is actually quite good, refers to this method (as well as ReferenceEquals(...) ) as "(very helpful) static methods", but I'm struggling to see the benefit here.

For ReferenceEquals(...) I can see the utility, as it is still capable of determining if two objects reference the same object (regardless of whether the Equals(...) method and and the == operator have been overridden).

For the other...not so much; Am I just missing something here?

+7  A: 

Imagine if, in the first case, obj1 was null.

Noon Silk
+6  A: 

Object.Equals(obj1, obj2):

if obj1 and obj2 are the same reference, returns true

if obj1 or obj2 is null, return false

otherwise returns obj1.Equals(obj2)

Julien Lebosquain
+1  A: 

Have a look at http://msdn.microsoft.com/en-us/library/w4hkze5k.aspx

adatapost