【问题标题】:Is the CLR a C# compiler or are these two different things?CLR 是 C# 编译器还是这两个不同的东西?
【发布时间】:2020-08-18 13:07:49
【问题描述】:

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

【问题讨论】:

  • C#编译器负责将C#源代码编译成IL。 C# 编译器的典型示例是csc
  • 而 CLR 是“公共语言运行时”——即运行已编译代码的执行环境。
  • 简而言之,Rolsyn 将 C# 代码编译成 IL,然后 CLR 运行 IL。 CLR 不是 C# 编译器。

标签: c# .net compilation clr


【解决方案1】:

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

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

可以这样想:天然气可以由从不同地方获取原油的埃克森或瓦莱罗制造。一旦埃克森或瓦莱罗炼油厂将原油转化为天然气,它就可以用于任何发动机设计为使用这些材料运行的汽车。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2020-11-25
    相关资源
    最近更新 更多