CA1871: Geef geen null-struct door aan 'ArgumentNullException.ThrowIfNull'
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1871 |
Titel | Geef geen null-struct door aan 'ArgumentNullException.ThrowIfNull' |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als informatie |
Oorzaak
Wanneer bijvoorbeeld int?
Guid?
een null-struct wordt doorgegeven aan ArgumentNullException.ThrowIfNull
een object, wordt deze doorgegeven aan een object, wat een prestatiestraf veroorzaakt.
Beschrijving van regel
Voor betere prestaties is het beter om de HasValue
eigenschap te controleren en handmatig een uitzondering te genereren dan een null-struct door te geven aan ArgumentNullException.ThrowIfNull
.
Schendingen oplossen
Controleer op null en gooi de ArgumentNullException handmatige waarde.
Opmerking
In het volgende codefragment ziet u een schending van CA1871:
static void Print(int? value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value.Value);
}
Met het volgende codefragment wordt de schending opgelost:
static void Print(int? value)
{
if (!value.HasValue)
{
throw new ArgumentNullException(nameof(value));
}
Console.WriteLine(value.Value);
}
Wanneer waarschuwingen onderdrukken
Het is veilig om deze waarschuwing te onderdrukken als de prestaties geen probleem zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1871.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.