Sdílet prostřednictvím


CA1871: Nepředávejte strukturu s možnou hodnotou null metodě ArgumentNullException.ThrowIfNull

Vlastnost Hodnota
ID pravidla CA1871
název Nepředávejte strukturu s možnou hodnotou null do ArgumentNullException.ThrowIfNull.
Kategorie výkon
Oprava je buď rozbíjející, nebo stabilní Nepřerušované
Povoleno ve výchozím nastavení v .NET 9 Jako informace

Příčina

Když se do ArgumentNullException.ThrowIfNullpředá nulovatelná struktura, například int? nebo Guid?, je zabalena do objektu, což způsobuje ztrátu výkonu.

Popis pravidla

Pro zvýšení výkonu je lepší zkontrolovat vlastnost HasValue a ručně vyvolat výjimku, než předat nulovatelnou strukturu do ArgumentNullException.ThrowIfNull.

Jak opravit porušení

Zkontrolujte hodnotu null a ručně vyvolte ArgumentNullException.

Příklad

Následující fragment kódu ukazuje porušení ca1871:

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

Následující fragment kódu opraví porušení zásad:

static void Print(int? value)
{
    if (!value.HasValue)
    {
        throw new ArgumentNullException(nameof(value));
    }

    Console.WriteLine(value.Value);
}

Kdy potlačit upozornění

Pokud výkon není problém, je bezpečné toto upozornění potlačit.

Potlačte upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.