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.