1

メソッドMとして実行されるコードを持つクラスAがあるとします。そして、Mを実行する時間であることをAに通知する必要があるクラスBがあります。

通常、イベントを発生させます。ただし、それを行う方法はいくつかあります。イベントを発生させるか、Actionを呼び出すか、パブリックメソッドとしてMを呼び出します。すなわち:

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

他のcalssメソッドを呼び出すこれらの(または他の)方法のいずれかが実行時にインライン化される可能性はありますか?

積極的なインライン化を使用して.NET4.5で実現することは可能ですか?

4

1 に答える 1

2

.NET JIT の現在のバージョンは、デリゲート呼び出しをインライン化しません。イベントは呼び出しのメカニズムとしてデリゲートを使用しているため、イベント呼び出しもインライン化されません。

デリゲートのインライン化は、コンパイル時にターゲットが必ずしもわかっているとは限らないため、困難です。軽減する手法はありますが、現在の JIT はそれらのいずれも実装していません。

ただし、ほとんどの場合、デリゲートの呼び出しは十分に高速です。

于 2012-06-20T17:13:42.980 に答える