C#基础学习1-CLR和IL
CLR(公共语言运行库),它是.net framework的核心。通常在CLR控制下运行的代码被称为托管代码(manage code)。
代码写好后,想要被执行,则需要先被编译。在.net中编译分为两个阶段:
- 把源码编译为Microsoft中间语言(IL)
- CLR把IL编译为平台专用代码。
说起中间语言的特点,到是很像JAVA的字节码。两者都是低级语言,语法很简单,可以很快的转成内部机器码。对于这种代码来说
有以下一些优点:
- 平台无关性 : 这点真不知道MS怎么说出口的,不知道.net除了windows的平台还能跑在哪里(这里我们不提MONO)。
- 提高性能:IL是即时(JIT)编译的,JIT编译是这样一种情况,JIT编译器并不是把整个应用程序一次编译完,而是只编译它调用的那部分代码。代码编译过一次后得到的内部可执行代码就存储起来,直到退出该应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。因此有一部分代码的编译是在运行时进行的,这样JIT编译器确切的知道程序是运行在什么样的处理器上的,然后它可以利用该处理器提供的任何特性或特定的机器代码指令来优化最后的可执行代码。传统的编译器也会优化代码,但只是相对于编译的特定机器,因为这种编译器,并不知道代码将要运行在什么样的处理器上。例如:VS6为一般的奔腾机器进行了优化,但他生成的可运行代码,就不能利用奔腾III处理器的硬件特性。相反,JIT编译器不仅可以进行VS6所能完成的优化工作,还可以优化代码所运行的特定处理器。
- 语言的互操作性:这个很易理解,.NET 有多种语言(C#,VB,C++),但都会被编译成IL中间语言。IL是不区分语言的,这样C#写的程序就可以与其它被编译成IL语言的其它程序通信,反之亦然。
中间语言的主要特性有:
- 面向对象和使用接口
- 值类型和引用类型之间的巨大差别
- 强数据类型
- 使用异常来处理错误
- 使用Attribute
浙公网安备 33010602011771号