[英]How to pass function as parameter
好的,我已经将函数作为参数传递给了这样的另一个函数:
someFunction(..., passFunc);
passFunc(){ MessageBox.Show("Message"); }
private void someFunction(..., Func<int> f) { f(); }
这样很好。 我将“ passFunc”传递给“ someFunction”作为参数,然后调用此参数(“ f()”)。 然后我得到带有文本“消息”的消息框。 好。
在程序的更高版本中,当我单击特定按钮的...时会调用函数“ passFunc”。然后,我希望获取文本。 我通常这样做: ((Button)sender).Text;
。 但是在这种情况下,我无法执行此操作,因为在此“ passFunc”中没有参数。
我怎样才能做到这一点? 因此,该“ passFunc”将类似于: passFunc(object sender, EventArgs e)
然后,我将能够执行此操作:
passFunc(object sender, EventArgs e)
{
MessageBox.Show(((Button)sender).Text);
}
这是代码: http : //pastie.org/6079188
如果要将输入传递给函数,请使用以下泛型类型重载:
Func<string, int> passFunc
编辑:
你这样叫passFunc
passFunc("some input");
EDIT2:
passFunc(object sender, EventArgs e)
不能与Func一起使用,因为它可能具有void返回类型。 然后,您必须使用Action<object, EventArgs>
。
您为什么不将passFunc订阅到该按钮的事件处理程序? 看起来像这个button1.Click += new EventHandler(passFunc)
然后passFunc将是
void passFunc(object sender, EventArgs e)
{
MessageBox.Show((sender as Button).Text);
}
我不知道这是否正是您要实现的目标,但可能可行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.