CA2264: Geef geen niet-null-waarde door aan 'ArgumentNullException.ThrowIfNull'
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA2264 |
Titel | Geef een niet-null-waarde niet 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>), typeparameters die niet-null-structs, 'nameof()'-expressies en 'nieuwe' expressies bekend zijn, 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.