【发布时间】:2015-01-30 16:41:18
【问题描述】:
CIL 是一种面向对象的汇编语言,完全是 基于堆栈。它的字节码被翻译成本机代码或——大多数 通常——由虚拟机执行。
为什么我们需要 CIL?不能将 C# 翻译成本机代码而不是 CIL 吗? 如果所有 .Net 语言都编译为 CIL,为什么不使用 C# 而不是 IL? CIL 比 C# 或 VB 更具表现力吗?
【问题讨论】:
-
“为什么 CIL 比 C# 或 VB 更具表现力?” - 你从哪里得到 CIL 比 C# 或 VB 更具表现力的想法,你在这里所说的 expressive 到底是什么意思?
-
@O.R.Mapper - 有有个结构可以在 IL 中表达,但在任何一个 IIRC 中都没有实现。
-
@O.R.Mapper CIL 允许您与 CTS 允许的所有编程结构进行交互
-
@MartinSmith, Gui_C:好的,如果那(功能范围)是“表达性”的意思,那么您可能有一点。我宁愿知道术语“富有表现力”类似于“直观易懂”(例如,
foreach循环在迭代某些东西方面比带有索引的传统for循环更具“表现力”)。即,“表现力”=“代码的意图表达的直观程度如何?”因此,我的问题是在这种情况下对“表达性”的确切定义。 -
当字节码被“虚拟机执行”时,它也会首先被翻译成本地代码。使您的开场白(?)具有误导性和不精确性。
标签: c# compilation cil intermediate-language