Бөлісу құралы:


CA1510: использование вспомогательной функции argumentNullException

Свойство Значение
Идентификатор правила CA1510
Заголовок Используйте вспомогательную функцию для выброса ArgumentNullException
Категория Ремонтопригодность
Исправление является критическим или не критическим Неразрывное
Включен по умолчанию в .NET 10 Как предложение
Применимые языки C# и Visual Basic

Причина

Код проверяет, является ли аргумент null, и затем условно генерирует ArgumentNullException.

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

Проверки аргументов существенно влияют на размер кода и часто доминируют в коде для небольших функций и наборов свойств. Эти проверки предотвращают инлайнинг и вызывают существенное засорение инструкционного кэша. Вспомогательные методы, такие как ArgumentNullException.ThrowIfNull, более простые и эффективные, чем if блоки, создающие новый экземпляр исключения.

Пример

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

void M(string arg)
{
    if (arg is null)
        throw new ArgumentNullException(nameof(arg));
}

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

void M(string arg)
{
    ArgumentNullException.ThrowIfNull(arg);
}

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

Замените if блок, который создает исключение вызовом ArgumentNullException.ThrowIfNull. Кроме того, в Visual Studio используйте меню лампочки для автоматического исправления кода.

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

Нарушение этого правила можно безопасно скрыть, если вы не беспокоитесь о поддерживаемости вашего кода. Также можно игнорировать нарушения, если это ложноположительный результат.

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

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

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

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

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

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