CLR是.Net的核心,通常在CLR控制下执行的代码叫托管代码
CLR在执行编写好的源代码之前需要进行编译,编译分为两个部分
(1)将源代码编译成中间语言(Microsoft Intermidiate Language,MSIL)
(2)把中间语言编译成平台专用代码
该过程十分的重要,它是提供.Net许多优点的关键
- 平台无关性:
IL是一些低级的指令语言,它可以很方便的转化为机器语言,它本身是平台无关的,这意味着编译的后一部分(把IL编译成平台专用代码)可以很容易完成。CLR来决定最终生成哪个平台相关代码(windows ,linux,mac) - 提高性能
IL总是及时编译的(JIT),它并不将应用程序一次编译完,而是编译运行所需的那部分代码,然后将编译过后的部分存储,这样下次运行就不需要编译了。这使得IL代码执行的速度几乎和内部代码一样快。
另一方面,CLR会针对当前的CPU做出针对性的优化从而提高性。 - 语言的互操作性
将不同语言编写的代码都编译成相同的IL,这样就可以是不同语言之间可以相互无差别的交互