C#编译器-使用';优化代码';国旗打开了吗?

C#编译器-使用';优化代码';国旗打开了吗?,c#,optimization,compiler-construction,C#,Optimization,Compiler Construction,我计划深入了解用C#编写的.NET系统的继承用法。我想分析中间语言代码而不是C#代码,以便能够同时查看编译后的代码。当启用optimize code标志时,是否有关于C#编译器可以执行哪些优化的信息 我正在分析与继承图相关的调用行为(例如,使用多态性、从基类重用方法等) 互联网上的大多数问题和资源都说“小优化”和其他模糊的东西。我需要特别了解在为发布模式编译时可能发生的语义变化。我对代码的性能不感兴趣 例如,Scott Hanselman在该方法内联中的帖子将在发布模式下出现。但这只是一个例子。

我计划深入了解用C#编写的.NET系统的继承用法。我想分析中间语言代码而不是C#代码,以便能够同时查看编译后的代码。当启用optimize code标志时,是否有关于C#编译器可以执行哪些优化的信息

我正在分析与继承图相关的调用行为(例如,使用多态性、从基类重用方法等)

互联网上的大多数问题和资源都说“小优化”和其他模糊的东西。我需要特别了解在为发布模式编译时可能发生的语义变化。我对代码的性能不感兴趣

例如,Scott Hanselman在该方法内联中的帖子将在发布模式下出现。但这只是一个例子。这意味着没有回答我的问题。

Eric Lippert(C#编译器团队的前首席开发人员)在他的博客上回答了这个问题。以下是一些评论:

  • 消除死代码(从未到达的分支,总是返回true的检查,…)
  • nullcheck优化
  • 删除间歇调用(
    A(B(C(D)))
    被重写为
    A(D)
  • 双回电话

整个博客有更多的例子,如果你想知道这一点,我敦促你阅读。

可能有助于详细说明你对此感兴趣的原因,例如,你是否关心性能?这有帮助吗@吉姆,是的,谢谢你,我知道那件事。但我想知道是否有更详细的来源。