我很想知道C#控制台应用程序是否存在任何生命周期,类似于ASP.Net生命周期。
我对
特别感兴趣static Main
方法如何影响依赖对象的编译答案 0 :(得分:6)
通常,每个方法在首次执行时都是JITted,并且根据需要再次发生程序集解析,通常表示“在使用我们尚未需要的程序集的方法的JIT期间“(但也可以意味着:通过反思)。
static Main
的工作方式与其他方法相同;您在Main
中使用的任何内容都将在Main
开始执行之前得到解决。在某些情况下,您可能需要(以帮助调试):
static int Main(string[] args) {
try {
return MainImpl(args);
} catch(Exception ex) {
// .. do something
return -1;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
static int MainImpl(string[] args) { ... }
如果通常位于Main
(但现在位于MainImpl
)的代码导致程序集解析错误,那么这很有用...因为你不能catch
中Main
的内容Main
如果Main
无法首先成功进行JIT成功。
至于生命周期...
Main
)