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.