Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Ценность |
|---|---|
| идентификатор правила | CA1871 |
| Заголовок | Не передавайте структуру, допускающую значение NULL, в "ArgumentNullException.ThrowIfNull" |
| категория | Производительность |
| Исправление является разрушающим или неразрушающим. | Неразрывная |
| Включен по умолчанию в .NET 10 | Как информация |
| Применимые языки | C# и Visual Basic |
Причина
Если структура, допускающая значение NULL, например, int? или Guid?, передана в ArgumentNullException.ThrowIfNull, она упаковывается в объект, что приводит к снижению производительности.
Описание правила
Для повышения производительности лучше проверить свойство HasValue и вручную вызвать исключение, чем передать структуру, допускаемую значение NULL, в ArgumentNullException.ThrowIfNull.
Устранение нарушений
Проверьте значение NULL и создайте ArgumentNullException вручную.
Пример
В следующем фрагменте кода показано нарушение CA1871:
static void Print(int? value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value.Value);
}
Следующий фрагмент кода исправляет нарушение.
static void Print(int? value)
{
if (!value.HasValue)
{
throw new ArgumentNullException(nameof(value));
}
Console.WriteLine(value.Value);
}
Когда подавлять предупреждения
Это предупреждение безопасно подавлять, если производительность не является проблемой.
Подавление предупреждения
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации .
[*.{cs,vb}]
dotnet_diagnostic.CA1871.severity = none
Дополнительные сведения см. в статье Подавление предупреждений анализа кода.