CA1805: Non inizializzare inutilmente
Proprietà | valore |
---|---|
ID regola | CA1805 |
Title | Non eseguire inutilmente l'inizializzazione |
Categoria | Prestazioni |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Un campo di una classe viene inizializzato in modo esplicito sul valore predefinito del tipo di tale campo.
Descrizione regola
Il runtime .NET inizializza tutti i campi dei tipi di riferimento sui relativi valori predefiniti prima di eseguire il costruttore. Nella maggior parte dei casi, l'inizializzazione esplicita di un campo sul relativo valore predefinito in un costruttore è ridondante, l'aggiunta di costi di manutenzione e la riduzione delle prestazioni (ad esempio con un aumento delle dimensioni dell'assembly) e l'inizializzazione esplicita può essere rimossa.
Come correggere le violazioni
Nella maggior parte dei casi, la correzione corretta consiste nell'eliminare l'inizializzazione non necessaria.
class C
{
// Violation
int _value1 = 0;
// Fixed
int _value1;
}
In alcuni casi, l'eliminazione dell'inizializzazione può comportare l'emissione di avvisi CS0649 successivi a causa del fatto che il campo mantiene il valore predefinito per sempre. In questi casi, una correzione migliore può essere quella di eliminare completamente il campo o sostituirlo con una proprietà:
class C
{
// Violation
private static readonly int s_value = 0;
// Fixed
private static int Value => 0;
}
Quando eliminare gli avvisi
È sempre sicuro eliminare l'avviso, perché l'avviso evidenzia semplicemente il codice potenzialmente non necessario e il lavoro che può essere evitato.
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 CA1805
// The code that's violating the rule is on this line.
#pragma warning restore CA1805
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.CA1805.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.