1

想象一下,你有一个类 A,它的代码作为方法 M 运行。还有一个类 B,它需要向 A 发出信号,它是时候运行 M 了。

通常你会触发一个事件。然而,有几种方法可以做到这一点。触发事件、调用 Action 或调用 M 作为公共方法。IE:

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

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

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

4

1 回答 1

2

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

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

不过,在大多数情况下,委托调用足够快。

于 2012-06-20T17:13:42.980 回答