CLR是C#编译器还是这两个不同的东西?

问题描述

我试图了解C#代码的编译和执行过程。网站上有很多有关CLR,CIL,CLS,FCL等的信息,但我找不到有关谁负责CIL中的C#代码编译的信息。是CLR还是c#的单独的特殊编译器?

解决方法

C#代码被编译为CIL字节码。 VB.NET等其他语言也可以编译为CIL字节码。

一旦代码被编译成CIL标准格式,引擎就会运行它。该引擎是CLR或“公共语言运行时”。

这样想:天然气可以由埃克森美孚或瓦莱罗制造,它们从不同的地方获取原油。埃克森美孚(Exxon)或瓦莱罗(Valero)炼油厂将原油转化为天然气后,便可以在其发动机设计为在原油上运行的任何汽车中使用。

以此类推,埃克森美孚(Exxon)和瓦莱罗(Valero)的炼油厂是“编译器”,将其材料转换为通用格式:天然气。 “ Gas”是字节码,可以在为其设计的引擎上运行。 CLR是“引擎”,它可以实际使用并在输出上运行。