CA1871: Skicka inte en nullable struct till "ArgumentNullException.ThrowIfNull"
Egenskap | Värde |
---|---|
Regel-ID | CA1871 |
rubrik | Skicka inte en nullbar struct till "ArgumentNullException.ThrowIfNull" |
Kategori | prestanda |
Fixet är antingen störande eller icke-störande | Ej brytande |
Aktiverad som standard i .NET 9 | Som information |
När en nullable struct, till exempel int?
eller Guid?
, skickas till ArgumentNullException.ThrowIfNull
, boxas den till ett objekt, vilket orsakar en prestandapåföljd.
För bättre prestanda är det bättre att kontrollera egenskapen HasValue
och manuellt generera ett undantag än att skicka en nullbar struct till ArgumentNullException.ThrowIfNull
.
Sök efter null och släng ArgumentNullException manuellt.
Följande kodfragment visar ett brott mot CA1871:
static void Print(int? value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value.Value);
}
Följande kodfragment åtgärdar överträdelsen:
static void Print(int? value)
{
if (!value.HasValue)
{
throw new ArgumentNullException(nameof(value));
}
Console.WriteLine(value.Value);
}
Det är säkert att ignorera den här varningen om prestanda inte är ett problem.
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 CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871
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.CA1871.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Feedback om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: