Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Object.Equals(obj1, obj2) vs obj1.Equals(obj2)?

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?

like image 499
Bob Avatar asked Dec 06 '22 04:12

Bob


2 Answers

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)

like image 200
Julien Lebosquain Avatar answered Dec 27 '22 18:12

Julien Lebosquain


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

like image 35
Noon Silk Avatar answered Dec 27 '22 18:12

Noon Silk