Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA1805 |
| Tytuł | Nie inicjuj niepotrzebnie |
| Kategoria | Wydajność |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Pole klasy jest jawnie inicjowane do wartości domyślnej odpowiadającej typowi 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.