Megosztás a következőn keresztül:


CA1805: Ne inicializálja feleslegesen

Tulajdonság Érték
Szabályazonosító CA1805
Cím Ne inicializálja feleslegesen
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Az osztály mezői explicit módon inicializálva lesznek az adott mező típusának alapértelmezett értékére.

Szabály leírása

A .NET-futtatókörnyezet a konstruktor futtatása előtt inicializálja a referenciatípusok összes mezőjét az alapértelmezett értékükre. A legtöbb esetben egy mező explicit inicializálása a konstruktor alapértelmezett értékére redundáns, karbantartási költségekkel és potenciálisan romló teljesítménnyel (például nagyobb szerelvénymérettel), és a explicit inicializálás eltávolítható.

Szabálysértések kijavítása

A legtöbb esetben a megfelelő javítás a szükségtelen inicializálás törlése.

class C
{
    // Violation
    int _value1 = 0;

    // Fixed
    int _value1;
}

Bizonyos esetekben az inicializálás törlése későbbi CS0649-figyelmeztetéseket eredményezhet, mivel a mező örökre megőrzi alapértelmezett értékét. Ilyen esetekben jobb megoldás lehet a mező teljes törlése vagy egy tulajdonságra való lecserélése:

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

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

Mikor kell letiltani a figyelmeztetéseket?

A figyelmeztetés mindig biztonságos, mivel a figyelmeztetés egyszerűen kiemeli a potenciálisan szükségtelen kódot és az esetlegesen elkerülhető munkát.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kapcsolódó információk