Share via


CA1822: Markera medlemmar som statiska

Property Värde
Regel-ID CA1822
Title Markera medlemmar som statiska
Kategori Prestanda
Korrigeringen är icke-bakåtkompatibel Icke-icke-bakåtkompatibel – Om medlemmen inte visas utanför sammansättningen, oavsett vilken ändring du gör.

Icke-icke-bakåtkompatibel – Om du bara ändrar medlemmen till en instansmedlem med nyckelordet this .

Icke-bakåtkompatibel – Om du ändrar medlemmen från en instansmedlem till en statisk medlem och den visas utanför sammansättningen.
Aktiverad som standard i .NET 8 Som förslag

Orsak

En medlem som inte har åtkomst till instansdata markeras inte som statisk (delad i Visual Basic).

Regelbeskrivning

Medlemmar som inte har åtkomst till instansdata eller anropar instansmetoder kan markeras som statiska (delade i Visual Basic). När du har markerat metoderna som statiska genererar kompilatorn icke-virtuella anropswebbplatser till dessa medlemmar. Om icke-virtuala anropsplatser genereras förhindras en kontroll vid körning för varje anrop som ser till att den aktuella objektpekaren inte är null. Detta kan uppnå en mätbar prestandavinst för prestandakänslig kod. I vissa fall representerar misslyckandet med att komma åt den aktuella objektinstansen ett korrekthetsproblem.

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

Markera medlemmen som statisk (eller Delad i Visual Basic) eller använd "this"/"Me" i metodtexten, om det är lämpligt.

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln för tidigare levererad kod som korrigeringen skulle vara en icke-bakåtkompatibel ändring för.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable CA1822
// The code that's violating the rule is on this line.
#pragma warning restore CA1822

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.CA1822.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

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 (Prestanda) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika API-ytor

Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. 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