c# - private void chart1_click object sender eventargs e




event.Invoke(args)とevent(args)を比較します。 どちらが速いの? (3)

どちらが速いですか。 event.Invoke(args)を使用するか、 event(args)呼び出すだけです。 違いは何ですか? 1つは他のものよりも速いか遅いかです。 それとも好みの問題ですか?


C#6.0にnull-conditionalsが導入されて以来、 Invokeを使用してデリゲートのスレッドセーフヌルチェックを簡素化することができます。 以前はどこかで

var handler = event;
if (handler != null)
    handler(args);

?.の組み合わせ?. Invoke使用すると簡単に書き込むことができます

event?.Invoke(args)

event(args)を呼び出すと、C#コンパイラはそれをevent.Invoke(args) IL呼び出しにevent.Invoke(args)ます。 これは同じことです。 System.String stringSystem.Stringようなものです。


どちらの方法もまったく同じILを生成してしまうので、呼び出しに違いはありません。

つまり、パフォーマンスの問題がある場合、このような変更は、まったく役に立たない可能性があります。 パフォーマンスの問題がなければ、このような質問をする理由は全くありません。







.net