C# イベント ハンドラーに追加データを渡す
イベント ハンドラーは、C# でイベントに応答するために重要です。 ただし、標準のイベント ハンドラー シグネチャは、多くの場合 sender
オブジェクトのみを提供します。 これにより、追加のコンテキストを渡す機能が制限されます。解決策を探ってみましょう:
次のシナリオについて考えてみましょう:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); // Only sender is passed } public void evHandler(Object sender) { // someData is inaccessible here }</code>
someData
は evHandler
内に必要ですが、標準のイベント メカニズムではそれを直接含めることはできません。
ラムダ式ソリューション
解決策は、イベント ハンドラーを割り当てるときにラムダ式を使用することです。
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); // Lambda expression to pass additional data } public void evHandler(Object sender, string someData) { // Now someData is accessible! }</code>
ラムダ式 (sender) => evHandler(sender, someData)
は匿名メソッドを作成します。 このメソッドはイベントから sender
オブジェクトを受け取り、evHandler
を呼び出して sender
と someData
の両方を渡します。 これにより、イベント ハンドラーに追加のパラメーターを効果的に挿入できるようになります。 このアプローチにより、イベント処理ロジックに渡されるデータの柔軟性と制御が向上します。
以上がC# で追加のパラメーターをイベント ハンドラーに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。