Dela via


Likhetsoperatorer

Anmärkning

Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.

I det här avsnittet beskrivs överbelastning av likhetsoperatorer och refererar till operator== och operator!= som likhetsoperatorer.

❌ Överbelasta INTE någon av likhetsoperatorerna och inte den andra.

✔️ Se till att Object.Equals och likhetsoperatorerna har exakt samma semantik och liknande prestandaegenskaper.

Detta innebär ofta att Object.Equals måste åsidosättas när likhetsoperatorerna överbelastas.

❌ UNDVIK att utlösa undantag från likhetsoperatorer.

Returnera till exempel false om ett av argumenten är null i stället för att NullReferenceExceptionkasta .

Likhetsoperatorer för värdetyper

✔️ Överbelasta likhetsoperatorerna på värdetyper om likheten är meningsfull.

I de flesta programmeringsspråk finns det ingen standardimplementering av operator== för värdetyper.

Likhetsoperatorer för referenstyper

❌ UNDVIK överlagring av likhetsoperatorer på föränderliga referenstyper.

Många språk har inbyggda likhetsoperatorer för referenstyper. De inbyggda operatorerna implementerar vanligtvis referensjämlikhet, och många utvecklare blir förvånade när standardbeteendet ändras till värdejämlikhet.

Det här problemet minimeras för oföränderliga referenstyper eftersom oföränderlighet gör det mycket svårare att märka skillnaden mellan referensjämlikhet och värdejämlikhet.

❌ UNDVIK att överbelasta likhetsoperatorer för referenstyper om implementeringen skulle vara betydligt långsammare än referensjämlikhet.

Portioner © 2005, 2009 Microsoft Corporation. Alla rättigheter reserverade.

Återtryckt med tillstånd från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition av Krzysztof Cwalina och Brad Abrams, publicerades den 22 oktober 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.

Se även