Opérateurs d'égalité

Remarque

Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. à partir des Instructions de conception d’une infrastructure : conventions, idiomes et modèles des bibliothèques réutilisables .NET, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.

Cette section traite de la surcharge des opérateurs d’égalité et fait référence à operator== et operator!= en tant qu’opérateurs d’égalité.

❌ NE SURCHARGEZ PAS l’un des opérateurs d’égalité et pas l’autre.

✔️ VEILLEZ à ce que Object.Equals et les opérateurs d’égalité aient exactement la même sémantique et des caractéristiques de performances similaires.

Cela signifie souvent que Object.Equals a besoin d’être remplacé lorsque les opérateurs d’égalité sont surchargés.

❌ ÉVITEZ de lever des exceptions à partir des opérateurs d’égalité.

Par exemple, retournez false si l’un des arguments a la valeur Null au lieu de lever NullReferenceException.

Opérateurs d’égalité sur des types valeur

✔️ SURCHARGEZ les opérateurs d’égalité sur des types valeur, si l’égalité est significative.

Dans la plupart des langages de programmation, il n’existe aucune implémentation par défaut de operator== pour les types valeur.

Opérateurs d’égalité sur des types référence

❌ ÉVITEZ de surcharger des opérateurs d’égalité sur des types référence mutables.

De nombreuses langages ont des opérateurs d’égalité intégrés pour les types référence. Les opérateurs intégrés implémentent généralement l’égalité des références, et de nombreux développeurs sont surpris lorsque le comportement par défaut est remplacé par l’égalité des valeurs.

Ce problème est atténué pour les types référence immuables, car l’immuabilité rend beaucoup plus difficile la possibilité de remarquer la différence entre l’égalité des références et l’égalité des valeurs.

❌ ÉVITEZ de surcharger des opérateurs d’égalité sur des types référence si l’implémentation serait considérablement plus lente que celle de l’égalité des références.

Portions © 2005, 2009 Microsoft Corporation. Tous droits réservés.

Réimprimé avec l’autorisation de Pearson Education, Inc. et extrait de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la série sur le développement Microsoft Windows.

Voir aussi