IL (Intermediate Language) Code is CPU independent partially/half compiled code. Partially means this code is not compiled to machine/CPU specific instructions. The reason behind it’s not fully compiled is: we do not know in what kind of environment .NET code will run i.e. what can be the end operating system, CPU configuration, machine configuration, security configuration etc. So the IL code is half compiled and on run time this code is compiled to machine specific instructions using the environment properties by JIT (Just-In-Time) compiler.