Kod C# nie kompiluje się bezpośrednio do kodu maszynowego. Kompiluje się do IL (Intermediate Language) — niezależnego od platformy bytecode'u — który uruchamia CLR, używając JIT (Just-In-Time) do przetłumaczenia IL na natywny kod maszynowy w trakcie wykonania. AOT (Ahead-Of-Time) to alternatywa, która kompiluje do kodu natywnego w czasie budowania.
Potok wykonania
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
