简体   繁体   中英

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?

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

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM