2009-10-05 3 views
4

En supposant que les deux objets ne sont pas des types de valeur et représentent tous les deux types qui ont surchargées la méthode equals (...), est-il une différence fonctionnelle entre:Object.Equals (obj1, obj2) vs obj1.Equals (obj2)?

  • appel obj1.Equals(obj2)
  • appel Object.Equals(obj1, obj2) ... ou Sont-ils fonctionnellement les mêmes?

Le livre Apress Je lis (Pro C# 2008), qui est en fait tout à fait bon, fait référence à cette méthode (ainsi que ReferenceEquals(...)) comme « (très utile) méthodes statiques », mais je me bats pour voir le bénéfice ici.

Pour ReferenceEquals(...) Je peux voir l'utilité, comme il est encore capable de déterminer si deux objets font référence au même objet (indépendamment du fait que le procédé et Equals(...) et l'opérateur == ont été substituée).

Pour l'autre ... pas tellement; Est-ce que je manque juste quelque chose ici? Imaginez si, dans le premier cas, obj1 était null.

Répondre

8

Object.Equals (OBJ1, obj2):

si OBJ1 et obj2 sont la même référence, renvoie vrai

si OBJ1 ou obj2 est nulle, return false

retourne autrement obj1.Equals (obj2)

+0

Je ne vois pas pourquoi nous utiliserions obj1.Equals (obj2) puis. –

8

Questions connexes