C# không biên dịch trực tiếp sang mã máy. Nó biên dịch sang IL (Intermediate Language) — một bytecode độc lập nền tảng — mà CLR chạy, dùng JIT (Just-In-Time) compilation để dịch IL sang mã máy native lúc chạy. AOT (Ahead-Of-Time) là một giải pháp thay thế biên dịch sang mã native lúc build.
Pipeline thực thi
C# source (.cs)
│ C# compiler (roslyn)
▼
IL bytecode (trong một assembly .dll/.exe) ← mã trung gian ĐỘC LẬP nền tảng
│ CLR nạp nó; JIT biên dịch IL → mã native LÚC CHẠY (theo từng method, khi được gọi)
▼
Mã máy native → thực thi trên CPU
