Egyenlőségi operátorok
Feljegyzés
Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms és Patterns for Reusable .NET Libraries, 2nd Edition engedélyével. Ezt a kiadást 2008-ban adták ki, és a könyvet azóta teljesen átdolgozták a harmadik kiadásban. Előfordulhat, hogy az oldalon található információk némelyike elavult.
Ez a szakasz az egyenlőségi operátorok túlterhelését tárgyalja, és egyenlőségi operátorokra hivatkozik operator==
és operator!=
azokra is hivatkozik.
❌ NE terhelje túl az egyik egyenlőségi operátort, és ne a másikat.
✔️ A DO biztosítja, hogy Object.Equals az egyenlőségi operátorok és az egyenlőségi operátorok pontosan azonos szemantikával és hasonló teljesítményjellemzőkkel rendelkezzenek.
Ez gyakran azt jelenti, hogy Object.Equals
felül kell bírálni, amikor az egyenlőségi operátorok túlterheltek.
❌ KERÜLJE az egyenlőségi operátorok kivételeit.
Például hamis értéket ad vissza, ha az egyik argumentum null a dobás NullReferenceException
helyett.
Egyenlőségi operátorok értéktípusokon
✔️ DO túlterheli az egyenlőség operátorok értéktípusok, ha az egyenlőség értelmes.
A legtöbb programozási nyelvben nincs alapértelmezett implementáció az operator==
értéktípusokhoz.
Egyenlőségi operátorok referenciatípusokon
❌ KERÜLJE az egyenlőségi operátorok túlterhelését a nem módosítható referenciatípusokon.
Számos nyelv rendelkezik beépített egyenlőségi operátorokkal a referenciatípusokhoz. A beépített operátorok általában a referenciaegyenlőséget valósítják meg, és sok fejlesztő meglepődik, ha az alapértelmezett viselkedést az értékegyenlőségre módosítják.
Ez a probléma enyhíthető a nem módosítható referenciatípusok esetében, mivel a megváltoztathatatlanság miatt sokkal nehezebb észrevenni a referenciaegyenlőség és az értékegyenlőség közötti különbséget.
❌ KERÜLJE a referenciatípusok egyenlőségi operátorainak túlterhelését, ha a végrehajtás jelentősen lassabb lenne, mint a referenciaegyenlőség.
© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.
Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published 22, 2008 by Addison-Wesley Professional, a Microsoft Windows Development Series részeként.