Udostępnij za pośrednictwem


CA2226: Operatory powinny być przeciążane symetrycznie

Właściwości Wartość
Identyfikator reguły CA2226
Tytuł Operatory powinny mieć symetryczne przeciążenia
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Nie.

Przyczyna

Typ implementuje operator równości lub nierówności, ale nie implementuje operatora przeciwnego.

Domyślnie ta reguła analizuje tylko typy widoczne zewnętrznie, ale można to skonfigurować.

Opis reguły

Nie ma sytuacji, w których równość lub nierówności mają zastosowanie do wystąpień typu, a przeciwny operator jest niezdefiniowany. Typy zazwyczaj implementują operator nierówności, zwracając negowaną wartość operatora równości.

Kompilator języka C# zgłasza błąd naruszenia tej reguły.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, zaimplementuj operatory równości i nierówności lub usuń ten, który jest obecny.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły. Jeśli to zrobisz, typ nie będzie działać w sposób zgodny z platformą .NET.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, których dotyczy, lub dla wszystkich reguł w tej kategorii (użycie), do których ma ona zastosowanie. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal