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


CA1871: Ne adjon át null értékű szerkezetet az "ArgumentNullException.ThrowIfNull" értéknek

Tulajdonság Érték
Szabályazonosító CA1871
Cím Ne adjon át null értékű szerkezetet az "ArgumentNullException.ThrowIfNull" parancsnak
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 9-ben Információként

Ok

Ha például int? egy null értékű szerkezetet ad Guid?át ArgumentNullException.ThrowIfNull, akkor egy objektumnak van bekeretezve, ami teljesítménybüntetést okoz.

Szabály leírása

A jobb teljesítmény érdekében jobb, ha ellenőrzi a HasValue tulajdonságot, és manuálisan kivételt vet ki, mintha null értékű strukturát ad át.ArgumentNullException.ThrowIfNull

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

Ellenőrizze a null értéket, és dobja manuálisan.ArgumentNullException

Példa

A következő kódrészlet a CA1871 megsértése esetén jelenik meg:

static void Print(int? value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value.Value);
}

A következő kódrészlet kijavítja a szabálysértést:

static void Print(int? value)
{
    if (!value.HasValue)
    {
        throw new ArgumentNullException(nameof(value));
    }

    Console.WriteLine(value.Value);
}

Mikor kell letiltani a figyelmeztetéseket?

Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani ezt a figyelmeztetést.

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 CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871

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.CA1871.severity = none

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