我知道Java代码被编译成字节码,由JVM执行。
C#又是怎样的情况呢?我注意到用C#编写的应用程序有.exe
扩展名,这似乎表明它们是本地机器指令。但实际上是这样吗?
我知道Java代码被编译成字节码,由JVM执行。
C#又是怎样的情况呢?我注意到用C#编写的应用程序有.exe
扩展名,这似乎表明它们是本地机器指令。但实际上是这样吗?
不。
与Java类似,C#被编译成中间语言(称为MSIL或CIL)。
与Java不同的是,IL存储在EXE文件中,这些文件具有足够的实际EXE代码,可以显示一个对话框向用户询问是否安装.Net。
ngen
和 GAC。 - SK-logicC#编译分为以下两个步骤:
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将被转换为机器指令。
C#代码被编译为MSIL,MSIL由.NET CLR处理。