C# non compila direttamente a codice macchina. Compila a IL (Intermediate Language) — un bytecode indipendente dalla piattaforma — che la CLR esegue, utilizzando la compilazione JIT (Just-In-Time) per tradurre l'IL a codice macchina nativo in fase di esecuzione. AOT (Ahead-Of-Time) è un'alternativa che compila a codice nativo al momento della compilazione.
La pipeline di esecuzione
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
