CA1871: Nepředávejte strukturu s možnou hodnotou null do argumentu 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 způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 Jako informace

Příčina

Pokud je například int? předána ArgumentNullException.ThrowIfNullstruktura s možnou hodnotou null nebo Guid?, je boxed do objektu, což způsobuje snížení výkonu.

Popis pravidla

Kvůli lepšímu výkonu je lepší zkontrolovat HasValue vlastnost a ručně vyvolat výjimku, než předat strukturu ArgumentNullException.ThrowIfNulls možnou hodnotou null .

Jak opravit porušení

Zkontrolujte hodnotu null a vyvolte ji ArgumentNullException ručně.

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čení 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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none 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.