Share via


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.ThrowIfNulleen 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.