gpt4 book ai didi

C# lambda 表达式,作用域变量值

转载 作者:行者123 更新时间:2023-11-30 15:07:54 24 4
gpt4 key购买 nike

您好,我正在尝试为事件处理程序编写一个 lambda。这样我就可以为被调用的方法提供更多信息。

所以我在做:

button.Click+=new EventHandler ((object sender, EventArgs args) => 
{ button_click (i, sender, args); });

哪里:

public void button_click (int i, object sender, EventArgs eventArgs)

好的,所以这就像调用方法一样工作,但是 i 始终是 i 的最后一个已知值,我真的想要 lambda 所在点的值传递给事件。你是怎么做到的?

谢谢

最佳答案

只需创建变量的副本:

int currentI = i;
button.Click+=new EventHandler ((object sender, EventArgs args) =>
{ button_click (currentI, sender, args); });

请注意,这里有一定数量的废话。你可以更简单地写成:

int currentI = i;
button.Click += (sender, args) => button_click(currentI, sender, args);

不过,我个人会重命名 button_click 方法以符合 .NET 命名约定。

关于C# lambda 表达式,作用域变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com