C # язык не делает вставку, но компилятор .NET CLR JIT может.
Виртуалы могут быть встроенными в запечатанном классе, но я не уверен насчет незапечатанных классов. Я бы предположил, что нет.
JIT оптимизирует перед выполнением кода, когда функция вызывается впервые. Потому что, прежде чем JIT начнет работать, у вас нет кода для выполнения. : P JIT происходит только один раз при первом вызове функции, а не при каждом вызове функции.
Обратите внимание, что встраивание выполняется только в сборке (DLL). JIT-компилятор не будет копировать код из другой сборки, чтобы встроить его в код этой сборки.