Que*_*ueg 12 c# bytecode compilation
我知道Java代码被编译成字节代码,由JVM执行.
C#的情况如何?我注意到用C#编写的应用程序具有.exe扩展名,表示它们是本机机器指令.但它真的如此吗?
SLa*_*aks 18
没有.
与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.
Run Code Online (Sandbox Code Playgroud)
组件(及时)在运行时执行从 CIL 到机器代码的编译
.exe 应该告诉您的是该文件是可执行的。C# 被编译为字节码,就像 java 一样,但 .NET 将其包装在 CLR 可执行文件中。
在这里查看更深入的 CLR 可执行文件http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/