Исправление является критическим или не критическим
Не критическое
Представленные версии
.NET 8
Включен по умолчанию в .NET 9
Как предложение
Причина
Код использует типы интерфейса или абстрактные типы, что приводит к ненужным вызовам интерфейса или виртуальным вызовам.
Описание правила
Это правило рекомендует обновить тип определенных локальных переменных, полей, свойств, параметров метода и возвращаемых типов методов из интерфейса или абстрактных типов до конкретных типов, когда это возможно. Использование конкретных типов приводит к повышению качества созданного кода путем минимизации затрат на развертывание виртуальных или интерфейсных интерфейсов.
Это правило сообщает только о нарушениях, если существуют виртуальные вызовы или вызовы интерфейса, которые на самом деле можно избежать с помощью конкретного типа.
Устранение нарушений
Обновите типы, как рекомендуется правилом. Как правило, изменение типа не влияет на поведение кода, но повышает его производительность.
Пример
В следующем фрагменте кода показано нарушение CA1859:
C#
abstractclassA
{
publicvirtualvoidM() { }
}
sealedclassB : A
{ }
internalclassC
{
privatereadonly A _a = new B();
publicvoidTrigger()
{
// This performs a virtual call because// _a is defined as an abstract class.
_a.M();
}
}
Следующий фрагмент кода исправляет нарушение.
C#
abstractclassA
{
publicvirtualvoidM() { }
}
sealedclassB : A
{ }
internalclassC
{
privatereadonly B _b = new B();
publicvoidTrigger()
{
_b.M();
}
}
Когда лучше отключить предупреждения
Это безопасно для подавления предупреждения, если производительность не является проблемой.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
C#
#pragmawarning disable CA1859// The code that's violating the rule is on this line.#pragmawarning restore CA1859
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.