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.