CA1805: Initiera inte i onödan
Property | Värde |
---|---|
Regel-ID | CA1805 |
Title | Initiera inte i onödan |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | 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.