2010-11-04 59 views
5

我知道,直到3.5,.Net使用.Net 2.0中定义的字节代码。.NET 4.0的CIL(公共中间语言)已更改吗?

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

由于最新的ECMA标准文件仍然是2006年的标准文件,我怀疑4.0不会更改字节码。

编辑:我在网上做了一些搜索,发现CIL是.Net字节码是不同的东西。我的理解是CIL to .Net字节码与机器码相同。所以我的问题仍然存在,CIL /字节码是否改变?

+0

可能重复http://stackoverflow.com/questions/1626368/difference-between-clr-2-0-and-clr- 4-0) – 2010-11-04 12:59:35

+0

不是。这个问题是关于CLR的变化,而不是CIL。事实上,其中只有一个答案甚至提到CIL,只是指出回答者不“相信”有新的指示。 – 2010-11-04 13:46:02

+1

ECMA标准版的所有含义是,Microsoft尚未提交新的。 C#的ECMA标准版本从C#2.0开始并没有改变,但我们都知道C#3.0(lambdas,局部变量类型推断,匿名结构类型,LINQ查询理解)和C#4.0(泛型协调)和反变化,'动态')。 – 2010-11-04 13:49:46

回答

7

是的,CLR已经改变:

.NET Framework Versions and Dependencies页:

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

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

+0

-1。这不是问题。 – 2010-11-04 13:46:17

+0

你完全正确。我发现很难找到关于这个的具体信息,除了'OpCodes'类;用这些信息扩展答案。 – 2010-11-04 14:05:30

-1

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

请参考https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx

([CLR 2.0和4.0 CLR之间的差异]的
+0

虽然这可能在理论上回答这个问题,但[这将是更可取的](// meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供供参考的链接。 – Raju 2016-05-21 04:02:16