C# ไม่ได้คอมไพล์เป็น machine code โดยตรง มันคอมไพล์เป็น IL (Intermediate Language) — bytecode ที่ไม่ขึ้นกับแพลตฟอร์ม — ซึ่ง CLR เป็นตัวรัน โดยใช้ JIT (Just-In-Time) compilation เพื่อแปล IL เป็น native machine code ขณะ runtime AOT (Ahead-Of-Time) เป็นทางเลือกที่คอมไพล์เป็น native code ตอน build
pipeline การทำงาน
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
