摘自<C#图解教程 第四版>
.NET框架的组成:
编译成CIL:
.NET语言的编译器接收源代码文件,并生成名为程序集的输出文件:
*程序集要么是可执行的,要么是DLL
*程序集中的代码是一种名为CIL(Commom Interneiate Language,公共中间语言)的中间语言
*程序集包含:程序的CIL/程序中使用的类型的元数据/对其他程序集引用的元数据
编译成本机代码并执行:
程序的CIL直到它被调用时才会被编译成本机代码.运行时,CLR执行下面的步骤:
1.检查程序集的安全特性
2.在内存中分配空间
3.把程序集中的可执行代码发送给实时(Just-In-Time,JIT)编译器,把其中的一部分编译成本机代码(解释型)
程序集中的可执行代码只在需要的时候由JIT编译器编译,然后他就被缓存起来以备执行.这个方法意味着不被调用的代码不会被编译成本机代码,且被调用到的代码只被编译一次.
一旦CIL被编译成本机代码,CLR就在它运行时管理它.
两个重要术语由此而生:
*托管代码 为.NET框架编写的代码称为托管代码(managed)
*非托管代码 不在CLR控制之下运行的代码,Win32 C/C++ DLL