2012-09-25 92 views
7

我知道Java代碼被編譯成字節碼,由JVM執行。是否將C#代碼編譯爲本機二進制文件?

C#的情況如何?我注意到用C#編寫的應用程序有.exe擴展名,這表明它們是本機機器指令。但它是真的嗎?

+0

這應該解釋。 http://en.wikipedia.org/wiki/List_of_CLI_languages – km1

+0

與ngen(與jit相似的Java) – Cynede

回答

14

Java一樣,C#編譯成中間語言(MSIL叫或CIL)。

與Java不同,IL存儲在具有足夠實際EXE代碼的EXE文件中,以顯示一個對話框,要求用戶安裝.Net。

+1

Mm。有點混淆,只是說「否」爲「是否編譯了C#代碼」。顯然,它被編譯。進入CLI指令。只是不(直接)到本地代碼。顯然,最終它們(即時)編譯爲本地代碼,無論如何。 – sehe

+0

@sehe:我在問題的最後一行說「不」。 – SLaks

+0

我編輯了問題標題以避免不匹配:) – sehe

2

c#代碼被編譯爲MSIL。它喜歡java字節碼。 msil將在運行時轉換爲機器isntrctions。

1. Conversion from C# to CIL by the C# compiler 

2. Conversion from CIL to instructions that the processor can execute. 

(只是在時間上)的組件執行此編譯的:

1

C#代碼編譯爲MSIL,MSIL由.NET CLR

2

C#彙編於這兩個步驟中完成的照顧從CIL到機器代碼的運行時間

相關問題