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 9 | 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