CA1805: Non inizializzare inutilmente

Proprietà valore
ID regola CA1805
Titolo Non eseguire inutilmente l'inizializzazione
Categoria Prestazioni
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 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.

Vedi anche