将附加数据传递给 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
,但标准事件机制不允许直接包含它。
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
,同时传递 sender
和 someData
。 这有效地允许您将额外的参数注入到事件处理程序中。 这种方法提供了更高的灵活性和对传递到事件处理逻辑的数据的控制。
以上是如何在 C# 中将额外参数传递给事件处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!