Udostępnij przez


Operatory równości

Uwaga / Notatka

Ta treść jest przedrukowana za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2. wydanie. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.

W tej sekcji omówiono przeciążenie operatorów równości i określa operator== oraz operator!= jako operatory równości.

❌ NIE przeciążaj jednego z operatorów równości, a nie innych.

✔️ Upewnij się, że Object.Equals i operatory równości mają dokładnie taką samą semantykę i podobne cechy wydajności.

Często oznacza to, że Object.Equals należy przesłonić, gdy operatory równości są przeciążone.

❌ UNIKAJ zgłaszania wyjątków przy użyciu operatorów równości.

Na przykład zwróć false, jeśli jeden z argumentów ma wartość null zamiast zgłaszać NullReferenceException.

Operatory równości dla typów wartości

✔️ Przeciąż operatory równości dla typów wartościowych, jeśli równość ma sens.

W większości języków programowania nie ma domyślnej implementacji typu wartości dla operator==.

Operatory równości dla typów referencyjnych

❌ UNIKAJ przeciążania operatorów równości na modyfikowalnych typach referencyjnych.

Wiele języków ma wbudowane operatory równości dla typów referencyjnych. Wbudowane operatory zwykle implementują równość odwołań, a wielu programistów zaskakuje zmiana domyślnego zachowania na równość wartości.

Ten problem jest ograniczany w przypadku niezmiennych typów odwołań, ponieważ niezmienność znacznie utrudnia zauważenie różnicy między równością odwołań a równością wartości.

❌ UNIKAJ przeciążania operatorów równości w typach referencyjnych, jeśli implementacja byłaby znacznie wolniejsza niż równość referencyjna.

© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

Przedrukowane za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition przez Krzysztofa Cwalinę i Brada Abramsa, opublikowane 22 października 2008 przez Addison-Wesley Professional w ramach serii Microsoft Windows Development.

Zobacz także