.NET编译有两个阶段
1.编译为IL代码.
2.JIT编译为本机代码.
这两个阶段都可以归类为编译时间吗?或者JIT编译到本机代码是否在运行时?
就错误而言,如果在第二阶段发生错误,那么它是运行时错误吗?(在阶段2之后发生的任何错误,即,当实际执行本机代码时应该是运行时错误)
据我的理解——
将 C# 编译为 MSIL 和将 MSIL 编译为本机代码是将编译过程的两个阶段。这两个阶段发生的错误都是编译时错误。
然而,第二阶段(JIT)不太可能出现任何编译错误。如果您的 C# 代码正确编译为 MSIL,那么它肯定会被 JIT 为本机代码,不会出现任何问题。
IMO 在 JITing 期间发生的最重要的事情是对本机平台的优化。
运行时错误是在执行 JITed 本机代码期间发生的错误。