Delen via


CA2264: Geef geen niet-null-waarde door aan 'ArgumentNullException.ThrowIfNull'

Eigenschappen Weergegeven als
Regel-id CA2264
Titel Geef geen niet-null-waarde door aan 'ArgumentNullException.ThrowIfNull'
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als waarschuwing

Oorzaak

Wanneer een waarde die nooit null is, wordt doorgegeven aan ArgumentNullException.ThrowIfNull(), wordt er nooit een uitzondering gegenereerd, waardoor de instructie een no-op wordt gemaakt.

Beschrijving van regel

ArgumentNullException.ThrowIfNull genereert wanneer het doorgegeven argument is null. Bepaalde constructies zoals niet-null-structs (met uitzondering van Nullable<T>), 'nameof()'-expressies en 'nieuwe' expressies zijn nooit null, dus ArgumentNullException.ThrowIfNull worden nooit gegooid.

In het geval van een struct, omdat ArgumentNullException.ThrowIfNull een struct accepteert object?, wordt de struct in het vak geplaatst, wat een extra prestatiestraf veroorzaakt.

Schendingen oplossen

Verwijder het ArgumentNullException.ThrowIfNull gesprek.

Opmerking

In het volgende codefragment ziet u een schending van CA2264:

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

Met het volgende codefragment wordt de schending opgelost:

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

Wanneer waarschuwingen onderdrukken

Het is altijd veilig om deze waarschuwing te onderdrukken.

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

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.