C# 对于.Net 4.0,CIL(公共中间语言)是否已更改?

C# 对于.Net 4.0,CIL(公共中间语言)是否已更改?,c#,.net,bytecode,command-line-interface,C#,.net,Bytecode,Command Line Interface,我知道在3.5之前,.Net使用.NET2.0中定义的字节码 我想知道新的4.0字节码是否会改变。谢谢 由于最新的ECMA标准文件仍然是2006年的,我怀疑4.0没有改变字节码 编辑:我在网上搜索了一下,发现CIL是。Net字节码是不同的东西。我的理解是,CIL到.Net字节码就像asm到机器码一样。所以我的问题仍然是,CIL/字节码是否改变了?是的,CLR已经改变了: 从页面: .NET Framework版本4:包括新版本的CLR、扩展的基类库和新功能,如托管可扩展性框架(MEF)、动态语言

我知道在3.5之前,.Net使用.NET2.0中定义的字节码

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

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


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

是的,CLR已经改变了:

从页面:

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


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

是的。现在有CLR版本4.0。这是最新版本4.6


请参阅

可能的副本,但不完全相同。这个问题是关于CLR的更改,而不是CIL。事实上,只有一个答案甚至提到了CIL,只是说回答者不“相信”有新的说明。ECMA标准版本意味着微软没有提交新的说明。自C#2.0以来,C#的ECMA标准版本也没有改变,但我们都知道C#3.0(lambdas、局部变量类型推断、匿名结构类型、LINQ查询理解)和C#4.0(通用协方差和逆变、
dynamic
)发生了重大变化。你完全正确。我发现除了
操作码
类之外,很难找到关于这方面的具体信息;用这些信息扩展答案。虽然这在理论上可以回答问题,但在这里包括答案的基本部分,并提供链接供参考。