CA1871: Nie przekazuj struktury dopuszczalnej wartości null do klasy "ArgumentNullException.ThrowIfNull"
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1871 |
Tytuł | Nie przekazuj struktury dopuszczalnej wartości null do klasy "ArgumentNullException.ThrowIfNull" |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako informacje |
Przyczyna
Gdy na przykład int?
struktura dopuszczana do wartości null lub Guid?
jest przekazywana do ArgumentNullException.ThrowIfNull
obiektu , jest ona w polu do obiektu, co powoduje karę za wydajność.
Opis reguły
Aby uzyskać lepszą wydajność, lepiej jest sprawdzić HasValue
właściwość i ręcznie zgłosić wyjątek niż przekazać strukturę dopuszczaną do wartości null do ArgumentNullException.ThrowIfNull
.
Jak naprawić naruszenia
Sprawdź wartość null i ręcznie wyrzuć.ArgumentNullException
Przykład
Poniższy fragment kodu przedstawia naruszenie ca1871:
static void Print(int? value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value.Value);
}
Poniższy fragment kodu naprawia naruszenie:
static void Print(int? value)
{
if (!value.HasValue)
{
throw new ArgumentNullException(nameof(value));
}
Console.WriteLine(value.Value);
}
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć to ostrzeżenie, jeśli wydajność nie jest problemem.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1871.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.