繁体   English   中英

如何通过函数作为参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM