CIL(公共中间语言)在 .Net 4.0 中有所改变吗?

5

我知道直到3.5版本,.Net使用的是在.Net 2.0中定义的字节码。

我想知道新的4.0字节码是否有所改变。谢谢!

由于最新的ECMA标准文件仍然是2006年的版本,我怀疑4.0没有改变字节码。

编辑:我在网上搜索了一下,发现CIL和.Net字节码是不同的东西。我的理解是,CIL对于.Net字节码就像汇编语言对于机器码一样。所以我的问题仍然存在,CIL/字节码是否会改变?


可能是CLR 2.0和CLR 4.0之间的区别的重复问题。 - Pieter van Ginkel
不完全是。那个问题涉及的是CLR的更改,而不是CIL。实际上,只有一个答案提到了CIL,而且只是为了说明回答者不“相信”有新的指令。 - Jörg W Mittag
2
ECMA标准版本的意思只是微软没有提交新版本。C#的ECMA标准版本自C# 2.0以来也没有改变,但我们都知道C# 3.0(lambda、本地变量类型推断、匿名结构类型、LINQ查询表达式)和C# 4.0(泛型协变和逆变性、动态类型)有重大变化。 - Jörg W Mittag
2个回答

7

是的,CLR已经改变:

.NET Framework Versions and Dependencies页面得知:

.NET Framework版本4:包括一个新版本的CLR、扩展的基类库和新功能,如托管可扩展框架(MEF)、动态语言运行时(DLR)和代码合同。

关于CIL(MSIL)的更改,我找到的最接近的信息是 System.Reflection.Emit.OpCodes 类没有更改,应该描述了所有可用的操作码。我通过将4.0文档版本与3.5文档版本进行比较来验证这一点。


你说得完全正确。我发现很难找到关于这个的具体信息,除了OpCodes类; 我会在答案中加入这些信息。 - Pieter van Ginkel

-1

虽然这理论上回答了问题,但最好在此处包含答案的基本部分,并提供参考链接。 - Raju

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接