Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Property | Värde |
|---|---|
| Regel-ID | CA2264 |
| Title | Skicka inte ett icke-nullbart 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-nullable structs (förutom ), typparametrar som är kända för Nullable<T>att vara icke-nullable structs, "nameof()" uttryck och "nya" uttryck är kända för att aldrig vara null, så ArgumentNullException.ThrowIfNull kommer aldrig att kasta.
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.