C# イベント ハンドラーの接続: デリゲート推論と明示的なデリゲートの使用
C# のイベントは、オブジェクト間の疎結合を可能にし、外部イベントを処理するメカニズムを提供します。一般的なシナリオには、外部オブジェクトからのイベントを動的にサブスクライブすることが含まれます。この場合、次のような構文のバリエーションが発生します:
<code class="language-c#">[object].[event] += anEvent;</code>
または
<code class="language-c#">[object].[event] += new EventHandler(anEvent);</code>
どちらの方法も似ているように見えますが、より深く理解すると、微妙な違いが明らかになります。
最初のバリアントでは、コンパイラは デリゲート推論 を実行して、提供された関数シグネチャに基づいて適切なデリゲート型を自動的に決定します。この簡略化された構文により、コードの冗長性が最小限に抑えられます。
2 番目のバリアントでは、new
キーワードを使用して EventHandler
デリゲートを明示的に指定します。このアプローチは C# 1.0 プロジェクトの唯一のオプションでしたが、C# 2.0 以降ではデリゲート推論が推奨されるアプローチになります。
デリゲート推論を使用する場合
C# 2.0 以降のプロジェクトの場合は、デリゲート推論が推奨されます。簡潔でコードの読みやすさが向上します。
例:
<code class="language-c#">private void Button1_Click(object sender, EventArgs e) { // 事件处理逻辑 } private void Form1_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; }</code>
この例では、デリゲート推論により、Button1
クリック イベントに対する正しい EventHandler
デリゲートが自動的に決定されます。
明示的なデリゲートの使用
デリゲート推論は一般的ですが、レガシー コードを処理する場合やパフォーマンスの最適化を実行する場合は、デリゲートを明示的に指定することが必要になる場合があります。ただし、明示的にデリゲートを使用すると不必要な冗長性が増すことが多いため、必要な場合にのみ使用する必要があります。
以上がC# での EventHandler の配線: デリゲートの推論と明示的なデリゲートの使用?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。