Sdílet prostřednictvím


Operátory rovnosti

Poznámka:

Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.

Tato část popisuje přetížení operátorů rovnosti a odkazuje na operator== a operator!= jako na operátory rovnosti.

❌ NEPŘETĚŽUJTE jeden z operátorů rovnosti, nikoli druhý.

✔️ Zajistěte, aby Object.Equals a operátory rovnosti měly přesně stejnou sémantiku a podobné charakteristiky výkonu.

To často znamená, že Object.Equals je potřeba přepsat, když jsou operátory rovnosti přetížené.

❌ Vyhněte se vyvolání výjimek z operátorů rovnosti.

Například vrátí hodnotu false, pokud jeden z argumentů je null místo vyvolání NullReferenceException.

Operátory rovnosti u typů hodnot

✔️ Přetěžujte operátory rovnosti u typů hodnot, pokud je rovnost smysluplná.

Ve většině programovacích operator== jazyků neexistuje výchozí implementace pro typy hodnot.

Operátory rovnosti u referenčních typů

❌ Vyhněte se přetížení operátorů rovnosti u proměnlivých referenčních typů.

Mnoho jazyků má předdefinované operátory rovnosti pro odkazové typy. Předdefinované operátory obvykle implementují rovnost odkazů a mnoho vývojářů je překvapeno, když se výchozí chování změní na rovnost hodnot.

Tento problém je zmírněn u neměnných referenčních typů, protože neměnnost činí mnohem těžší vnímat rozdíl mezi rovností odkazů a rovností hodnot.

❌ Vyhněte se přetížení operátorů rovnosti u referenčních typů, pokud by implementace byla výrazně pomalejší než referenční rovnost.

Části z © 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.

Přetištěno se svolením Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition od Krzysztofa Cwaliny a Brada Abramse, vydáno 22. října 2008 nakladatelstvím Addison-Wesley Professional jako součást série Microsoft Windows Development.

Viz také