首页 >后端开发 >C++ >如何在 C# 中将额外参数传递给事件处理程序?

如何在 C# 中将额外参数传递给事件处理程序?

Susan Sarandon
Susan Sarandon原创
2025-01-23 08:31:10441浏览

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,但标准事件机制不允许直接包含它。

Lambda 表达式解决方案

解决方案在于在分配事件处理程序时使用 lambda 表达式:

<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>

lambda 表达式 (sender) => evHandler(sender, someData) 创建一个匿名方法。 此方法从事件接收 sender 对象,然后调用 evHandler,同时传递 sendersomeData。 这有效地允许您将额外的参数注入到事件处理程序中。 这种方法提供了更高的灵活性和对传递到事件处理逻辑的数据的控制。

以上是如何在 C# 中将额外参数传递给事件处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn