2010-11-04 33 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