C#代码是否编译为本机二进制文件?

我知道Java代码被编译成字节代码,由JVM执行。

C#的情况如何? 我注意到用C#编写的应用程序具有.exe扩展名,这表示它们是本机机器指令。 但它真的如此吗?

没有。

与Java一样,C#被编译为中间语言(称为MSIL或CIL)。

与Java不同,IL存储在EXE文件中,这些文件具有足够的实际EXE代码,以显示一个对话框,要求用户安装.Net。

该.exe应该告诉你的是该文件是可执行的。 C#被编译成字节码,就像java一样,但是.NET将它包装在CLR可执行文件中。

请看这里更深入地了解CLR可执行文件http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+TheCommon+Language+Runtime/2.2+CLR+Executables/

C#编译通过以下两个步骤完成:

 1. Conversion from C# to CIL by the C# compiler 2. Conversion from CIL to instructions that the processor can execute. 

组件(及时)在运行时从CIL到机器代码执行此编译

c#代码编译为MSIL。 它喜欢java字节码。 msil将在运行时转换为机器isntrctions。

C#代码编译为MSIL,MSIL由.NET CLR处理