可以从其他类的方法内联吗?

时间:2012-06-20 17:08:36

标签: c# .net optimization asp.net-4.0 .net-4.5

想象一下,你有一个A类,其代码以方法M的形式运行。有一个B类需要发信号通知A是时候运行M了。

通常你会发射一个事件。但是,有几种方法可以做到这一点。触发事件,调用Action或将M调用为公共方法。即:

b.OnMEvent(this, null);
b.MAction();
a.M();

是否有可能在运行时内联这些(或其他)方法调用其他calss方法?

是否可以在.NET 4.5中实现积极的内联?

1 个答案:

答案 0 :(得分:2)

当前版本的.NET JIT没有内联委托调用。事件使用委托作为调用机制,因此事件调用也不会内联。

内联委托很难,因为目标在编译时不一定是已知的。有缓解技术,但目前的JIT没有实现任何技术。

但在大多数情况下,委托调用的速度已经足够快了。