Operatory równości

Uwaga

Ta zawartość jest drukowana przez uprawnienie Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. 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 odnosi się do operator== operatorów równości i operator!= jako operatorów równości.

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

✔️ Upewnij się, że Object.Equals 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 od operatorów równości.

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

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

✔️ Przeładuj operatory równości dla typów wartości, jeśli równość jest zrozumiała.

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

Operatory równości w typach 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 deweloperów jest zaskoczonych zmianą 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ż w przypadku równości odwołań.

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

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 oct 22, 2008 by Addison-Wesley Professional w ramach Microsoft Windows Development Series.

Zobacz też