Поделиться через


CA2264: не передайте ненулевое значение в ArgumentNullException.ThrowIfNull.

Свойство Значение
Идентификатор правила CA2264
Заголовок Не передайте ненулевое значение в ArgumentNullException.ThrowIfNull
Категория Использование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 9 Как предупреждение

Причина

Если значение, которое никогда не имеет значения NULL, передается ArgumentNullException.ThrowIfNull(), исключение никогда не создается, что делает оператор no-op.

Описание правила

ArgumentNullException.ThrowIfNull вызывается при выполнении переданного аргумента null. Некоторые конструкции, такие как структуры, не допускающие значение NULL (за исключением Nullable<T>), параметры типа, известные как структуры, не допускающие значения NULL, выражения nameof(), и выражения new, как известно, никогда не будут иметь значение NULL, поэтому ArgumentNullException.ThrowIfNull никогда не будет вызываться.

В случае структуры, так как ArgumentNullException.ThrowIfNull принимает object?структуру, она будет боксирована, что приводит к дополнительным штрафам за производительность.

Устранение нарушений

ArgumentNullException.ThrowIfNull Удалите звонок.

Пример

В следующем фрагменте кода показано нарушение CA2264:

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

Следующий фрагмент кода исправляет нарушение.

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

Когда лучше отключить предупреждения

Это предупреждение всегда безопасно подавлять.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.