为什么.NET代码编译成MSIL?

Sid*_*qui 7 .net cil

第一个.NET代码编译为MSIL,然后JIT将其转换为机器相关代码.任何人都可以告诉我因为2步编译而获得的所有好处.谢谢

Mat*_*nik 20

有几个原因.首要的可能是使其跨平台.如果C#或其他.NET语言直接编译为本机代码,则必须为它们运行的​​每个平台重新编译它们.使用VM,所有代码都可以保存为中间格式,您只需要为每个平台编写VM实现.

此外,通过使用与语言无关的中间语言,您可以使用许多高级语言(C#,VB.NET,Python等),这些语言都引用用其他语言编写的程序集.由于它们都编译成相同的东西,因此它们可以相互无缝地工作.

还有性能优势.JIT编译器可以专门针对当时运行代码的机器进行积极的优化.我不知道.NET JIT编译器在这个意义上做了多少优化,但是可以获得非常大的理论上的好处.

  • 真?然后解释Mono.:) (8认同)
  • .NET并不仅限于在Windows上运行.v1 docs已经提到了这一点.会发生什么是微软没有为其他平台实施虚拟机. (3认同)
  • 跨平台并不真正适用于.NET框架,因为它只是在Windows上运行,但仍然是一个有效点.+1 (2认同)
  • musicfreak - 虽然MS.NET只适用于Windows,但它仍然需要考虑转换为2000,XP,Vista,7及更高版本的API,更不用说x86 vs x64,再加上x128(如果8支持它),还有什么是未来."Windows"远非同质. (2认同)

小智 6

答案可以在MSDN找到