我知道Java代码被编译成字节码,由JVM执行。
C# 的情况如何?我注意到用 C# 编写的应用程序具有 .exe
扩展名,这表明它们是本机机器指令。但真的是这样吗?
No.
与Java一样,C#被编译为一种中间语言(称为MSIL或CIL)。
与 Java 不同,IL 存储在 EXE 文件中,这些文件具有足够的实际 EXE 代码来显示一个对话框,要求用户安装 .Net。
C# 编译是通过以下两个步骤完成的:
1. Conversion from C# to CIL by the C# compiler
2. Conversion from CIL to instructions that the processor can execute.
组件(及时)在运行时从 CIL 到机器代码执行此编译
该.exe应该告诉您的是该文件是可执行的。C#被编译成字节码,就像Java一样,但.NET将其包装在CLR可执行文件中。
在此处查看更深入的 CLR 可执行文件 http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/
C# 代码编译为 MSIL。 它喜欢Java字节码。 MSIL 将在运行时转换为计算机。
代码编译为 MSIL,MSIL 由 .NET CLR负责<</p>
还有一个项目允许将 C# 编译为独立的二进制可执行文件:CoreRT