Dela via


CA1805: Initiera inte i onödan

Property Värde
Regel-ID CA1805
Rubrik Initiera inte i onödan
Kategori Prestanda
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Ett fält i en klass initieras uttryckligen till standardvärdet för fältets typ.

Regelbeskrivning

.NET-körningen initierar alla fält av referenstyper till standardvärdena innan konstruktorn körs. I de flesta fall är det redundant att uttryckligen initiera ett fält till standardvärdet i en konstruktor, lägga till underhållskostnader och potentiellt försämra prestanda (till exempel med ökad sammansättningsstorlek) och den explicita initieringen kan tas bort.

Så här åtgärdar du överträdelser

I de flesta fall är rätt korrigering att ta bort den onödiga initieringen.

class C
{
    // Violation
    int _value1 = 0;

    // Fixed
    int _value1;
}

I vissa fall kan borttagning av initieringen leda till att efterföljande CS0649-varningar utfärdas på grund av att fältet behåller sitt standardvärde för alltid. I sådana fall kan en bättre korrigering vara att ta bort fältet helt eller ersätta det med en egenskap:

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

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

När du ska ignorera varningar

Det är alltid säkert att ignorera varningen eftersom varningen helt enkelt markerar potentiellt onödig kod och arbete som kan undvikas.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även