17

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

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

4

6 回答 6

29

不。

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

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

于 2012-09-25T13:01:10.103 回答
6

C# 编译分两步完成:

1. Conversion from C# to CIL by the C# compiler

2. Conversion from CIL to instructions that the processor can execute.

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

于 2012-09-25T13:12:00.427 回答
6

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

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

于 2012-09-25T13:12:10.867 回答
4

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

于 2012-09-25T13:02:56.333 回答
3

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

于 2012-09-25T13:05:09.187 回答
0

还有一个项目允许将 C# 编译为独立的二进制可执行文件:CoreRT

于 2020-02-13T08:18:32.933 回答