2012-09-25 126 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到机器代码的运行时间

相关问题