Delen via


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

Eigenschap Waarde
Regel-id CA2264
Titel Geef een niet-nullable waarde niet door aan ArgumentNullException.ThrowIfNull
Categorie Gebruik
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Als waarschuwing
Toepasselijke talen C# en Visual Basic

Oorzaak

Een waarde die bekend is dat deze nooit null is, wordt doorgegeven aan ArgumentNullException.ThrowIfNull().

Beschrijving van regel

ArgumentNullException.ThrowIfNull genereert wanneer het doorgegeven argument is null. Bepaalde constructies, zoals niet-nullbare structs (met uitzondering van Nullable<T>), typeparameters die bekendstaan als niet-nullbare structs, 'nameof()'-expressies en 'new'-expressies die bekendstaan als, zijn bekend nooit null te zijn, dus ArgumentNullException.ThrowIfNull zal nooit worden gegooid. ArgumentNullException.ThrowIfNull Bellen is dus niet nodig.

In het geval van een struct, omdat ArgumentNullException.ThrowIfNull een object? accepteert, wordt de struct geboxed, wat een extra prestatieverlies veroorzaakt.

Hoe schendingen op te lossen

Verwijder het ArgumentNullException.ThrowIfNull gesprek.

Voorbeeld

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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Zie ook