为什么我们在.net Framework中需要MSIL

Raj*_*mar -1 c# cil

我想知道当我们编译.net源代码时,它首先转换为MSIL然后转换为二进制可执行代码.我知道MSIL是与机器和语言无关的代码.

但是为什么在被CPU执行之前它首先被转换为MSIL.实际上我们在.net框架中有什么需要MSIL?

Job*_*obo 6

在我的头顶:

  • 它节省了大量时间,因为MSIL已经过优化,我们称之为预编译
  • MSIL与语言无关,如果代码是用C#,VB或F#或......编写的,那就不再重要了,这意味着"优秀运行时"不需要为每种可能的语言编写正确的编译器
  • MSIL与平台无关
  • 谷歌一下

  • 还有:装载机的健全/验证.检查CPU代码非常困难,但IL保留了意图 (3认同)