Compte tenu de Microsoft présente déclaration sur l'égalité des opérateurs ==
et !=
, la conclusion est: ==
doit être juste sucre syntaxique pour Object.Equals()
:
FAIRE en sorte que l'Objet.D'égal à égal et les opérateurs d'égalité ont exactement la même sémantique
à partir de http://msdn.microsoft.com/en-us/library/vstudio/7h9bszxx(v=vs. 110).aspx
Qu'ils sont distincts, plutôt que juste un peu de sucre, avec le recul, semble être une erreur dans leur conception.
Si vous voulez être certain que vous obtenez de l'IDENTITÉ de la comparaison (lorsque l'on compare les références), puis utilisez ReferenceEquals
à la place.
Malheureusement, la gestion de l' ==
est si contradictoire, que j'ai l'habitude de l'éviter lors de la manipulation de quelqu'un d'autre classes personnalisées, et il suffit d'utiliser le moins lisible Equals(a, b)
ou ReferenceEquals(a, b)
, selon le sens que je veux.
À mon humble avis, il serait mieux pour les gens de ne pas mettre en oeuvre ==
et !=' at all. Just let .Net default to
Équivautand
! Est égal à, and implement
est Égal à, " selon le cas.
Si quelqu'un a une logique différente, j'aimerais l'entendre.
(Et oui, c'est vraiment déroutant, étant donné que Java a existé en premier, et utilise ==
à la moyenne ReferenceEquals
. Mais il est trop tard pour changer .Net pour se comporter de cette façon. Et nous avons de Microsoft déclaration à cet effet, dans le lien donné ci-dessus.)