C# 如何:将变量传递给System.Action,它不会';我没有任何情妇
这就是我想要实现的代码。 (可能不正确,或者无法实现??)C# 如何:将变量传递给System.Action,它不会';我没有任何情妇,c#,C#,这就是我想要实现的代码。 (可能不正确,或者无法实现??) var buttons=this.buttons; 用于(int i=0;ionClick(按钮)订阅按钮的onClick事件;。这个lambda是一个带有0个参数的void委托,就像一个动作一样,因此可以用来订阅onClick事件 本质上,您获取局部变量button的值,并在lambda中使用它,只有在调用事件时才会调用它 您的行应该是这样的:button.onClick+=()=>onClick(button);您可以使用lambd
var buttons=this.buttons;
用于(int i=0;i
您可以使用lambdas转发事件。这不是世界上最漂亮的事情。您可以使用()=>onClick(按钮)订阅按钮的onClick
事件;
。这个lambda是一个带有0个参数的void委托,就像一个动作一样,因此可以用来订阅onClick
事件
本质上,您获取局部变量button
的值,并在lambda中使用它,只有在调用事件时才会调用它
您的行应该是这样的:
button.onClick+=()=>onClick(button);
您可以使用lambdas转发事件。这不是世界上最漂亮的事情。您可以使用()=>onClick(button)订阅按钮的onClick
事件;
。这个lambda是一个带有0个参数的void委托,就像一个动作一样,因此可以用来订阅onClick
事件
本质上,您获取局部变量button
的值,并在lambda中使用它,只有在调用事件时才会调用它
您的行应该如下所示:
button.onClick+=()=>onClick(button);
谢谢你的回答。但是,如果我使用lambda,我不知道如何从onClick事件中删除lambda。实际上,我正在寻找解决此问题的最佳解决方案。谢谢你的回答。但是,如果我使用lambda,我不知道如何从onClick事件中删除lambda。实际上,我正在寻找是否有一个最佳解决方案解决这个问题的方法很简单。
var buttons = this.buttons;
for (int i = 0; i < buttons.Length; ++i)
{
var button = buttons[i];
// I want to pass current button to onClick,
// but onClick is a delegate with no param just like System.Action.
button.onClick += OnClick;
}
void OnClick(Button button)
{
// Do something
}