C# ei käänny suoraan konekoodiksi. Se kääntyy IL-koodiksi (Intermediate Language) — alustariippumattomaksi tavukoodiksi — jonka CLR suorittaa käyttämällä JIT-kääntäjää (Just-In-Time) kääntämään IL-koodia natiiviksi konekoodiksi ajonaikaisesti. AOT (Ahead-Of-Time) on vaihtoehtoinen lähestymistapa, joka kääntää natiivikoodiksi käännösaikaisesti.
Suoritusputki
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
