Udostępnij za pośrednictwem


CA2264: Nie przekazuj wartości innej niż null do wartości "ArgumentNullException.ThrowIfNull"

Właściwości Wartość
Identyfikator reguły CA2264
Tytuł Nie przekazuj wartości innej niż null do ArgumentNullException.ThrowIfNull
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako ostrzeżenie

Przyczyna

Gdy wartość, która nigdy nie ma wartości null, jest przekazywana do ArgumentNullException.ThrowIfNull(), wyjątek nigdy nie jest zgłaszany, co oznacza, że instrukcja nie jest op.

Opis reguły

ArgumentNullException.ThrowIfNull zwraca wartość , gdy przekazany argument to null. Niektóre konstrukcje, takie jak struktury niepuste (z wyjątkiem Nullable<T>), parametry typu znane jako niepuste struktury, wyrażenia "nameof()" i "nowe" wyrażenia nigdy nie będą mieć wartości null, więc ArgumentNullException.ThrowIfNull nigdy nie będą zwracane.

W przypadku struktury, ponieważ ArgumentNullException.ThrowIfNull akceptuje object?element , struktura jest w polu, co powoduje dodatkową karę za wydajność.

Jak naprawić naruszenia

Usuń wywołanie ArgumentNullException.ThrowIfNull .

Przykład

Poniższy fragment kodu przedstawia naruszenie ca2264:

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

Poniższy fragment kodu naprawia naruszenie:

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

Kiedy pomijać ostrzeżenia

Zawsze można bezpiecznie pominąć to ostrzeżenie.

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 CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.