检查C#中的方法内联

Mig*_*uel 9 c# inline

如果在发布版本中内联给定的方法或属性getter,有什么方法可以检查(而不是强制)?

Jon*_*eet 7

不 - 因为它不会在构建时发生; 它发生在JIT时间.C#编译器不会执行任何内联; 由代码最终运行的CLR决定.

可以使用cordbg发现这一点,并启用所有JIT优化,但您需要深入了解汇编代码.我不知道在代码中发现这种情况的方法.(您可以使用调试器API执行此操作,但这可能会禁用一些内联开始.)


Jor*_*dão 5

它们永远不会被C#编译器内联.只有const字段.

您可以在这里查看C#编译器优化.

可以确保方法或属性访问器永远不会应用此属性进行内联:

[MethodImpl(MethodImplOptions.NoInlining)]
Run Code Online (Sandbox Code Playgroud)