ホームページ > バックエンド開発 > C++ > C# で追加のパラメーターをイベント ハンドラーに渡すにはどうすればよいですか?

C# で追加のパラメーターをイベント ハンドラーに渡すにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-23 08:31:10
オリジナル
439 人が閲覧しました

How Can I Pass Extra Parameters to an Event Handler in C#?

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>
ログイン後にコピー

someDataevHandler 内に必要ですが、標準のイベント メカニズムではそれを直接含めることはできません。

ラムダ式ソリューション

解決策は、イベント ハンドラーを割り当てるときにラムダ式を使用することです。

<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 を呼び出して sendersomeData の両方を渡します。 これにより、イベント ハンドラーに追加のパラメーターを効果的に挿入できるようになります。 このアプローチにより、イベント処理ロジックに渡されるデータの柔軟性と制御が向上します。

以上がC# で追加のパラメーターをイベント ハンドラーに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート