在事件驱动编程中,事件处理程序通常使用仅接受发送者对象作为参数的方法进行分配。但是,有时您可能需要向事件处理程序传递其他数据。
示例:
考虑以下代码:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); } public void evHandler(Object sender) { // 需要在此处使用 someData!!! }</code>
在此示例中,evHandler 是一个事件处理程序,需要访问在 setup 方法中可用的 someData 字符串。
解决方案:
要将 someData 传递给 evHandler,您可以使用 lambda 表达式定义事件处理程序,如下所示:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); } public void evHandler(Object sender, string someData) { // 需要在此处使用 someData!!! }</code>
在此代码中,lambda 表达式 (sender) => evHandler(sender, someData)
创建一个新的事件处理程序,该处理程序将发送者对象作为参数并将其与 someData 一起传递给 evHandler 方法。这确保了 someData 在事件处理程序中可用。
以上是如何在 C# 中将附加参数传递给事件处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!