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
string
やSystem.String
ようなものです。
どちらの方法もまったく同じILを生成してしまうので、呼び出しに違いはありません。
つまり、パフォーマンスの問題がある場合、このような変更は、まったく役に立たない可能性があります。 パフォーマンスの問題がなければ、このような質問をする理由は全くありません。