C#编译器会优化空的void方法吗?就像是
private void DoNothing()
{
}
Run Code Online (Sandbox Code Playgroud)
实际上,除了添加DoNothing到调用堆栈并再次删除它之外,没有代码可以运行,优化此调用不是更好吗?
Jon*_*eet 18
C#编译器会优化空的void方法吗?
不,它们仍然可以通过反射访问,因此方法本身保留很重要.
任何呼叫站点都可能包含该呼叫 - 但JIT可能会优化它们.这样做的位置要好得多.它基本上是内联的特殊情况,内联代码为空.
请注意,如果您在另一个对象上调用它:
foo.DoNothing();
Run Code Online (Sandbox Code Playgroud)
这不是无操作,因为它会检查foo是否为非空.