Udostępnij za pomocą


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 10 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ż