CA1805: Zbytečně neicializovat

Vlastnost Hodnota
ID pravidla CA1805
Název Nepoužívejte inicializaci zbytečně
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Pole třídy je explicitně inicializováno na výchozí hodnotu typu daného pole.

Popis pravidla

Modul runtime .NET inicializuje všechna pole referenčních typů na výchozí hodnoty před spuštěním konstruktoru. Ve většině případů je explicitní inicializace pole na výchozí hodnotu v konstruktoru redundantní, přidání nákladů na údržbu a potenciálně snížení výkonu (například se zvýšenou velikostí sestavení) a explicitní inicializace se dá odebrat.

Jak opravit porušení

Ve většině případů je správnou opravou odstranění nepotřebné inicializace.

class C
{
    // Violation
    int _value1 = 0;

    // Fixed
    int _value1;
}

V některých případech může odstranění inicializace způsobit vydání následných upozornění CS0649 kvůli tomu, že pole zachová výchozí hodnotu navždy. V takových případech může být lepší oprava odstranit pole zcela nebo ho nahradit vlastností:

class C
{
    // Violation
    private static readonly int s_value = 0;

    // Fixed
    private static int Value => 0;
}

Kdy potlačit upozornění

Upozornění je vždy bezpečné potlačit, protože upozornění jednoduše zvýrazní potenciálně nepotřebný kód a práci, kterým se můžete vyhnout.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také