Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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 10 | Jako informace |
Příčina
Když se do int?předá nulovatelná struktura, například Guid? nebo ArgumentNullException.ThrowIfNull, 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.