CA1822: Leden markeren als statisch
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1822 |
Titel | Leden markeren als statisch |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend: als het lid niet zichtbaar is buiten de assembly, ongeacht de wijziging die u aanbrengt. Niet-brekend: als u het lid alleen wijzigt in een exemplaarlid met het this trefwoord.Fouten veroorzaken: als u het lid wijzigt van een exemplaarlid in een statisch lid en zichtbaar is buiten de assembly. |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een lid dat geen toegang heeft tot exemplaargegevens, wordt niet gemarkeerd als statisch (Gedeeld in Visual Basic).
Beschrijving van regel
Leden die geen toegang hebben tot exemplaargegevens of methoden voor aanroepen van exemplaren, kunnen worden gemarkeerd als statisch (gedeeld in Visual Basic). Nadat u de methoden als statisch hebt gemarkeerd, verzendt de compiler niet-virtuele aanroepsites naar deze leden. Het verzenden van niet-virtuele oproepsites voorkomt een controle tijdens runtime voor elke aanroep die ervoor zorgt dat de huidige objectpointer niet null is. Dit kan een meetbare prestatiewinst bereiken voor prestatiegevoelige code. In sommige gevallen vertegenwoordigt de fout bij het openen van het huidige objectexemplaren een probleem met de juistheid.
Schendingen oplossen
Markeer het lid als statisch (of gedeeld in Visual Basic) of gebruik 'this'/'Me' in de hoofdtekst van de methode, indien van toepassing.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken voor eerder verzonden code waarvoor de oplossing een belangrijke wijziging zou zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1822
// The code that's violating the rule is on this line.
#pragma warning restore CA1822
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1822.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Code configureren om te analyseren
Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze optie configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (prestaties) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt instellen op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal