CA2264: Skicka inte ett icke-nullbart värde till "ArgumentNullException.ThrowIfNull"

Property Värde
Regel-ID CA2264
Title Skicka inte ett icke-null-värde till "ArgumentNullException.ThrowIfNull"
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 9 Som varning

Orsak

När ett värde som är känt för att aldrig vara null skickas till ArgumentNullException.ThrowIfNull()genereras aldrig ett undantag, vilket gör -instruktionen till en no-op.

Regelbeskrivning

ArgumentNullException.ThrowIfNull genererar när det skickade argumentet är null. Vissa konstruktioner som icke-nullbara structs (förutom Nullable<T>), nameof()-uttryck och "nya" uttryck är kända för att aldrig vara null, så ArgumentNullException.ThrowIfNull kommer aldrig att utlösas.

När det gäller en struct, eftersom ArgumentNullException.ThrowIfNull accepterar en object?, boxas structen, vilket orsakar ytterligare en prestandastraff.

Så här åtgärdar du överträdelser

Ta bort anropet ArgumentNullException.ThrowIfNull .

Exempel

Följande kodfragment visar ett brott mot CA2264:

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

Följande kodfragment åtgärdar överträdelsen:

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

När du ska ignorera varningar

Det är alltid säkert att undertrycka den här varningen.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.