我知道Java代码被编译成字节代码,由JVM执行。
C#是什么情况?我注意到用C#编写的应用程序具有.exe
扩展名,这表示它们是本地机器指令。但它真的如此吗?
答案 0 :(得分:16)
没有
与Java一样,C#被编译为中间语言(称为MSIL或CIL)。
与Java不同,IL存储在EXE文件中,这些文件具有足够的实际EXE代码,以显示一个对话框,要求用户安装.Net。
答案 1 :(得分:3)
.exe应该告诉你的是该文件是可执行的。 C#被编译成字节码,就像java一样,但是.NET将它包装在CLR可执行文件中。
请在此处深入了解CLR可执行文件http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/
答案 2 :(得分:2)
C#编译完成以下两个步骤:
1. Conversion from C# to CIL by the C# compiler
2. Conversion from CIL to instructions that the processor can execute.
组件(及时)在运行时从CIL到机器代码执行此编译
答案 3 :(得分:1)
c#代码编译为MSIL。它喜欢java字节码。 msil将在运行时转换为机器isntrctions。
答案 4 :(得分:1)
C#代码编译为MSIL,MSIL由.NET CLR编译
答案 5 :(得分:0)
还有一个项目允许将C#编译为独立的二进制可执行文件:Django docs