C# не компилируется напрямую в машинный код. Он компилируется в IL (Intermediate Language) — платформонезависимый байт-код — который CLR выполняет, используя JIT (Just-In-Time) компиляцию для преобразования IL в нативный машинный код во время выполнения. AOT (Ahead-Of-Time) — это альтернатива, которая компилирует в нативный код на этапе сборки.
Конвейер выполнения
C# source (.cs)
│ C# compiler (roslyn)
▼
IL bytecode (in a .dll/.exe assembly) ← platform-INDEPENDENT intermediate code
│ CLR loads it; JIT compiles IL → native code AT RUNTIME (per method, as called)
▼
Native machine code → executes on the CPU
