Delen via


Gelijkheidsoperators

Opmerking

Deze inhoud wordt opnieuw afgedrukt met toestemming van Pearson Education, Inc. uit Framework Design Guidelines: Conventies, idioom en patronen voor herbruikbare .NET-bibliotheken, 2e editie. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.

In deze sectie worden overbelasting van gelijkheidsoperators besproken en wordt verwezen naar operator== en operator!= als gelijkheidsoperators.

❌ NIET overbelast een van de gelijkheidsoperators en niet de andere.

✔️ Zorg ervoor dat Object.Equals en de gelijkheidsoperatoren precies dezelfde semantiek en vergelijkbare prestatiekenmerken hebben.

Dit betekent vaak dat Object.Equals moet worden overschreven wanneer de gelijkheidsoperatoren overbelast zijn.

❌ VERMIJD het opwerpen van uitzonderingen bij gelijkheidsoperatoren.

Retourneer bijvoorbeeld onwaar als een van de argumenten null is, in plaats van NullReferenceException te gooien.

Gelijkheidsoperators voor waardetypen

Overlaad de gelijkheidsoperatoren voor waardetypen, als gelijkheid zinvol is.

In de meeste programmeertalen is er geen standaard implementatie van operator== voor waardetypen.

Gelijkheidsoperators voor referentietypen

❌ VERMIJD overbelasting van gelijkheidsoperators voor veranderlijke referentietypen.

Veel talen hebben ingebouwde gelijkheidsoperators voor referentietypen. De ingebouwde operators implementeren meestal de referentie gelijkheid en veel ontwikkelaars zijn verbaasd wanneer het standaardgedrag wordt gewijzigd in de gelijkheid van waarden.

Dit probleem wordt verminderd voor onveranderbare referentietypen, omdat onveranderbaarheid het veel moeilijker maakt om het verschil tussen referentie-equality en waarde-equality op te merken.

❌ VERMIJD overbelasting van gelijkheidsoperators voor referentietypen als de implementatie aanzienlijk trager zou zijn dan die van referentie gelijkheid.

© Gedeelten 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.

Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, gepubliceerd 22 oktober 2008 door Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.

Zie ook