2

この質問への回答の内容から、私は新しいトリックを学びました。イベントが発生したときにnullチェックを回避するために、イベントに些細なハンドラーを追加します。

public static event EventHandler SomeEvent = delegate {};

ヌルチェックなしで呼び出すには:

SomeEvent(null,EventArgs.Empty);

これはかなりのオーバーヘッドを追加しますか?そうでない場合、なぜこのようなものが組み込まれていないのですか?

4

1 に答える 1

2

これはかなりのオーバーヘッドを追加しますか?そうでない場合、なぜこのようなものが組み込まれていないのですか?

大きなオーバーヘッドは追加されません。イベントが発生したときに呼び出しを委任するだけです。

組み込みではない理由については、いくつかの欠点があります。

  1. これは必ずしも防弾ではありません。後でハンドラーリストをクリアすることもできます。その場合でも、適切なチェックが必要になります。
  2. これによりオーバーヘッドが追加されます。マイナーではありますが、特定のシナリオではそのオーバーヘッドが問題になる可能性があります。
于 2012-05-18T19:32:08.080 に答える