在事件处理程序中访问额外参数
假设您需要向事件处理程序传递额外数据。例如,我们有一个分配事件处理程序的设置方法:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); }</code>
而事件处理程序 evHandler
需要访问 someData
参数:
<code class="language-csharp">public void evHandler(Object sender) { // 需要在此处使用 someData!!! }</code>
解决方案
为了向事件处理程序传递额外参数,您可以使用 lambda 表达式作为委托。我们不直接分配 evHandler
方法,而是分配一个 lambda 表达式,该表达式将发送者对象作为第一个参数,将 someData
作为第二个参数:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); }</code>
现在,evHandler
方法可以同时接受发送者和 someData
参数:
<code class="language-csharp">public void evHandler(Object sender, string someData) { // 访问发送者和 someData }</code>
以上是如何在 C# 中将额外参数传递给事件处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!