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ć NullReferenceException
wartość .
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.