一、.NET编译

     1.C#和.net的关系
         C#是一种语言,尽管它是用于生存面向.net环境的代码,但它本身不是.net的一部分.net支持的一些特性,C#并不支持。而C#语言支持的另一些特性,.net并支持(例如运算符重载)
     2..net编译阶段
          (1)把源代码编译成Microsoft中间语言(IL)
          (2)CLR把IL编译成平台专用的代码。
          Microsoft中间语言试用数字代码,可以非常快速地转换为内部机器码。
          优点:平台无关性,提高性能和语言的互操作性。
     3.JIT编译
           JIT编译并不是把整个应用程序一次编译,而是只编译它调用的那部分代码。
           代码编译一次后,得到的内部可执行代码就存储起来,知道退出应用程序为止,
           这样下次运行这部分代码时,就不需要重新编译了。
二、中间语言的特定
     1.面向对象和接口的支持
          (1) 用一种语言编写的类应能继承用另外一种语言编写的类。
          (2) 一个类应能包含另一个类的实例,而不管它们是使用什么语言编写的。
          (3) 对象或者对象的引用应能在方法之间传递。
          (4) 在不同的语言之间调用方法时,应能在调试器中调试这些方法调用,
             即调试不同语言编写的源代码。
     2.相异值类型和引用类型
          值类型: 变量直接保存其数据
          引用类型:变量仅保存其存地址,对应的数据可以在该地址中找到。
     通用类型定义一个内容丰富的类型层次结构,如下:
  

通用类型系统(CTS):保证不同语言直接数据类型的统一。
公共语言:(CLS) :和通用类型系统一起确保语言的互操作性。
 
三、.net编译工作原理图