C#面试题更新 2026-08-03

请解释中间语言(IL)的概念,并描述 C 代码编译为 IL 的具体流程是怎样的。

考察说明

考察对 C 代码编译过程及中间语言本质的理解。

回答思路

  1. 【回答框架 1】首先,中间语言(IL)是一种独立于 CPU 的指令集,类似于低级但面向对象的汇编语言。它由编译器生成,最终由公共语言运行时(CLR)中的即时编译器(JIT)转换为机器码执行。
  2. 【回答框架 2】C 代码编译为 IL 的流程:源代码首先由 C 编译器(如 csc)进行词法和语法分析,生成抽象语法树,然后经过语义分析和优化,最终生成 IL 元数据和 IL 代码,保存在程序集(PE 文件)中。
  3. 【回答框架 3】生成的 IL 代码包含对类型、方法、字段的元数据引用,以及表示操作的具体指令。运行时,JIT 引擎会根据需要将 IL 编译为本地机器码,并应用运行时优化。
  4. 【回答框架 4】整个过程中,IL 提供了语言互操作性,不同语言编译成统一的 IL,支持跨语言继承和调用。
  5. 【关键点 1】IL 是独立于 CPU 的中间指令集,由 JIT 编译为机器码。
  6. 【关键点 2】C 编译流程包括词法分析、语法分析、语义分析、生成 IL。
  7. 【关键点 3】IL 与元数据一起存储于程序集,支持跨语言互操作。