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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.