NET的 CLR真的是C#开发的??
虽说许多语言的编译器可以用该语言自身开发。这倒是没什么问题。
可前两天,看到说linux的mono项目中,net的编译器是用c#开发的。
这就不理解了。
因为net与其他语言编译后为机器代码不同,他是中间码。
也就是,即使你用c#写出了具有编译器功能的代码,可编译后也只不过是IL,仍需要在CLR环境下运行。难不成所谓的编译器在另一个框架上运行??
或者,退一步。 即使只是将C# 翻译为IL的这部分, 本身就是IL形式的代码,这部分代码要执行还需要CLR(这得是二进制的吧)。
那在编译时,先将 IL-Complier部分 JIT执行于CLR,然后,在翻译C#到IL。那,效率?