运行时VS编译时间(.NET)

时间:2011-02-10 06:30:13

标签: .net

.NET编译有两个阶段

  • 1。编译为IL代码。

  • 2。 JIT编译为本机代码。

这两个阶段都可以归类为编译时间吗? 或者JIT编译到本机代码是否在运行时?

就错误而言,如果在第二阶段发生错误,是运行时错误吗? (在阶段2之后发生的任何错误,即,当实际执行本机代码时应该是运行时错误)

2 个答案:

答案 0 :(得分:4)

根据我的理解 -

将C#编译为MSIL并将MSIL编译为本机代码是编译过程的两个阶段。两个阶段发生的错误都是编译时错误。

但是,第二阶段(JIT)不太可能存在任何编译错误。如果您的C#代码正确编译到MSIL,那么肯定会对本机代码进行JIT编译而不会出现任何问题。

IMO在JITing期间发生的最重要的事情是对本机平台的优化。

运行时错误是在执行JITed本机代码期间发生的错误。

答案 1 :(得分:0)

JIT编译可能失败的情况是使用System.Reflection.Emit成员构建动态程序集。

我认为这是一个运行时错误,编译时错误是当C#编译器检测到发出IL的代码中的错误时引发的错误。