C#深入详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7 C#程序的编译运行

1.7.1 什么是CLI

Common Language Infrastructure的简称。CLI是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础。

1.7.2 什么是CLR

Common Language Runtime的简称。C#程序在.NET Framework上运行,它是Windows的一个必要组件,包括一个称为公共语言运行库的虚拟执行系统和一组统一的类库。CLR是Microsoft的公共语言基础结构(CLI)的一个商业实现。

1.7.3 什么是IL

Intermediate Language的简称,称为中间语言,又称为MSIL。所有.NET源代码(使用任何语言)被编译为IL,然后在软件的安装点上或者运行时,IL由即时(JIT)编译器转换为机器码。

1.7.4 C#程序是如何编译运行的

图1-1演示了C#源代码文件、基类库、程序集和CLR的编译时与运行时的过程。

· 第一阶段:用C#编写的源代码被编译为一种符合CLI规范的中间语言(IL)。IL代码与资源(例如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为.exe或.dll。

· 第二阶段:执行C#程序时,程序集将加载到CLR中,这可能会根据清单中的信息执行不同的操作。如果符合安全要求,CLR执行实时(JIT)编译以将IL代码转换为本机机器指令。CLR还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由CLR执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。

图1-1 C#源代码文件、基类库、程序集和CLR的编译运行过程