Condividi tramite


CA1822: Contrassegna i membri come statici

Proprietà valore
ID regola CA1822
Title Contrassegna i membri come statici
Categoria Prestazioni
La correzione causa un'interruzione o meno Non di rilievo: se il membro non è visibile all'esterno dell'assembly, indipendentemente dalla modifica apportata.

Non di rilievo: se si modifica semplicemente il membro in un membro dell'istanza con la this parola chiave .

Interruzione: se si modifica il membro da un membro dell'istanza a un membro statico ed è visibile all'esterno dell'assembly.
Abilitato per impostazione predefinita in .NET 9 Come suggerimento

Causa

Un membro che non accede ai dati dell'istanza non è contrassegnato come statico (Condiviso in Visual Basic).

Descrizione regola

I membri che non accedono ai dati dell'istanza o chiamano i metodi dell'istanza possono essere contrassegnati come statici (Condivisi in Visual Basic). Tramite il compilatore verranno quindi inviati siti di chiamata non virtuali a tali membri. L'emissione di siti di chiamate non virtuali impedirà un controllo in fase di esecuzione per ogni chiamata che assicura che il puntatore dell'oggetto corrente non sia null. In questo modo è possibile ottenere un miglioramento delle prestazioni misurabile per il codice sensibile alle prestazioni. In alcuni casi, l'errore di accesso all'istanza dell'oggetto corrente rappresenta un problema di correttezza.

Come correggere le violazioni

Contrassegnare il membro come statico (o Condiviso in Visual Basic) o usare 'this'/'Me' nel corpo del metodo, se appropriato.

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola per il codice fornito in precedenza per il quale la correzione sarebbe una modifica che causa un'interruzione.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Configurare il codice da analizzare

Usare l'opzione seguente per configurare le parti della codebase in cui eseguire questa regola.

È possibile configurare questa opzione solo per questa regola, per tutte le regole a cui si applica o per tutte le regole di questa categoria (prestazioni) a cui si applica. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.

Includere superfici API specifiche

È possibile configurare le parti della codebase in modo da eseguire questa regola in base all'accessibilità. Ad esempio, per specificare che la regola deve essere eseguita solo sulla superficie dell'API non pubblica, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:

dotnet_code_quality.CAXXXX.api_surface = private, internal