Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1513 |
| Заголовок | Используйте метод throw helper для ObjectDisposedException |
| Категория | Ремонтопригодность |
| Исправление является критическим или не критическим | Неразрывное |
| Включен по умолчанию в .NET 10 | Как предложение |
| Применимые языки | C# и Visual Basic |
Причина
Код проверяет, удаляется ли объект, а затем условно вызывает ObjectDisposedException.
Описание правила
Проверки объектов оказывают существенное влияние на размер кода и часто доминируют в коде для небольших функций и наборов свойств. Эти проверки предотвращают инлайнинг и вызывают существенное засорение инструкционного кэша. Вспомогательные методы, такие как ThrowIf, более простые и эффективные, чем if блоки, создающие новый экземпляр исключения.
Пример
В следующем фрагменте кода показано нарушение CA1513:
class C
{
private bool _disposed = false;
void M()
{
if (_disposed)
throw new ObjectDisposedException(GetType().Name);
}
}
В следующем фрагменте кода показано исправление:
class C
{
private bool _disposed = false;
void M()
{
ObjectDisposedException.ThrowIf(_disposed, this);
}
}
Устранение нарушений
Замените if блок, который создает исключение вызовом ThrowIf. Кроме того, в Visual Studio используйте меню лампочки для автоматического исправления кода.
Когда лучше отключить предупреждения
Нарушение этого правила можно безопасно скрыть, если вы не беспокоитесь о поддерживаемости вашего кода. Также можно игнорировать нарушения, если это ложноположительный результат.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1513
// The code that's violating the rule is on this line.
#pragma warning restore CA1513
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1513.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.