Несколько сообщений здесь указывают на то, что .NET Jit генерирует callvirt даже для невиртуальных методов класса, тогда как статические и структурные методы используют прямой вызов.
Добавляет ли добавление типа записи в C# интерес к этому обсуждению? Например. Используют ли классы записей callvirt, как обычные классы?
Действительно ли запечатанные классы обеспечивают преимущества в производительности?
Как избежать накладных расходов виртуального C# звонки
Подробнее здесь: https://stackoverflow.com/questions/790 ... rd-methods