CA2264: Non passare un valore non nullable a 'ArgumentNullException.ThrowIfNull'

Proprietà valore
ID regola CA2264
Title Non passare un valore non nullable a 'ArgumentNullException.ThrowIfNull'
Categoria Utilizzo
La correzione causa un'interruzione o meno Non causa un'interruzione
Abilitato per impostazione predefinita in .NET 9 Come avviso

Causa

Quando un valore noto per non essere mai null viene passato a ArgumentNullException.ThrowIfNull(), non viene mai generata un'eccezione, rendendo l'istruzione no-op.

Descrizione regola

ArgumentNullException.ThrowIfNull genera quando l'argomento passato è null. Alcuni costrutti come struct non nullable (ad eccezione Nullable<T>di ), le espressioni 'nameof()' e le espressioni 'new' non sono mai null, quindi ArgumentNullException.ThrowIfNull non generano mai un'eccezione.

Nel caso di uno struct, poiché ArgumentNullException.ThrowIfNull accetta un object?oggetto , lo struct viene sottoposto a boxing, causando una riduzione delle prestazioni aggiuntiva.

Come correggere le violazioni

Rimuovere la ArgumentNullException.ThrowIfNull chiamata.

Esempio

Il frammento di codice seguente mostra una violazione di CA2264:

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

Il frammento di codice seguente corregge la violazione:

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

Quando eliminare gli avvisi

È sempre sicuro eliminare questo avviso.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.