Udostępnij za pośrednictwem


CA1805: Nie inicjuj niepotrzebnie

Właściwości Wartość
Identyfikator reguły CA1805
Tytuł Nie inicjuj niepotrzebnie
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Nie.

Przyczyna

Pole klasy jest jawnie inicjowane do wartości domyślnej typu tego pola.

Opis reguły

Środowisko uruchomieniowe platformy .NET inicjuje wszystkie pola typów odwołań do ich wartości domyślnych przed uruchomieniem konstruktora. W większości przypadków jawne inicjowanie pola do jego wartości domyślnej w konstruktorze jest nadmiarowe, dodawanie kosztów konserwacji i potencjalnie obniżenie wydajności (na przykład ze zwiększonym rozmiarem zestawu), a jawne inicjowanie można usunąć.

Jak naprawić naruszenia

W większości przypadków właściwą poprawką jest usunięcie niepotrzebnej inicjalizacji.

class C
{
    // Violation
    int _value1 = 0;

    // Fixed
    int _value1;
}

W niektórych przypadkach usunięcie inicjowania może spowodować wystawienie kolejnych ostrzeżeń CS0649 ze względu na to, że pole zachowuje wartość domyślną na zawsze. W takich przypadkach lepszym rozwiązaniem może być całkowite usunięcie pola lub zastąpienie go właściwością:

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

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

Kiedy pomijać ostrzeżenia

Zawsze można bezpiecznie pominąć ostrzeżenie, ponieważ ostrzeżenie po prostu wyróżnia potencjalnie niepotrzebny kod i pracę, których można uniknąć.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też