Dela via


CA2226: Operatorer bör ha symmetriska överlagringar

Egenskap Värde
Regel-ID CA2226
Title Operatörer bör ha symmetrisk överlagring
Kategori Användning
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

Orsak

En typ implementerar likhets- eller ojämlikhetsoperatorn och implementerar inte den motsatta operatorn.

Som standard tittar den här regeln bara på externt synliga typer, men det kan konfigureras.

Regelbeskrivning

Det finns inga omständigheter där vare sig likhet eller ojämlikhet gäller för instanser av en typ, och den motsatta operatorn är odefinierad. Typer implementerar vanligtvis ojämlikhetsoperatorn genom att returnera det negerade värdet för likhetsoperatorn.

C#-kompilatorn utfärdar ett fel vid överträdelser av den här regeln.

Så här åtgärdar du överträdelser

För att åtgärda en överträdelse av den här regeln, implementera både likhets- och ojämlikhetsoperatorerna, eller ta bort den som redan finns.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln. Om du gör det fungerar inte din typ på ett sätt som är konsekvent med .NET.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera det här alternativet för bara den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (användning) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika ytor för API:er

Du kan konfigurera vilka delar av kodbasen som ska köra den här regeln baserat på deras tillgänglighet genom att ange alternativet api_surface. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Anteckning

Ersätt den XXXX delen av CAXXXX med ID:t för den tillämpliga regeln.