.net framework的程序总是用JIT方式执行吗? 有没有解释执行的情况?
Java程序默认是jvm解释执行字节码。.net framework的程序呢? 是总要JIT执行? 还是可以解释执行?
Debug一个C#程序的时候,也是JIT之后的debug版本呢,还是解释执行的?
------解决方案--------------------
实际上,解释执行和编译执行没有什么严格的区别,你可以理解为解释执行是按照IL指令为最小单位的编译,而编译执行是按照方法为最小单位的解释。
严格来说,并不是所有的C#代码都会变成IL,并且由JIT编译执行。一个例子就是LINQ的查询表达式。虽然可能你觉得这是一个特例,但是我想告诉你的是,在未来的.NET框架中,可能这会成为一种常态:开发者有机会将更多的代码留到运行期间处理,因此解释和编译的边界变得模糊了。
但是目前的CLR,没有按照单条指令的粒度的“解释执行”的机制,这和Java不同。我想原因很简单,和Java相比,.NET虽然也被设计成跨平台的,但是更少有需求必须通过解释执行去适配更多目标机器。