在A班,我有
internal void AFoo(string s, Method DoOtherThing)
{
if (something)
{
//do something
}
else
DoOtherThing();
}
现在,我需要能够将
DoOtherThing
传递给AFoo()
。我的要求是,DoOtherThing
可以具有返回类型的任何签名几乎总是无效的。来自B类的东西,void Foo()
{
new ClassA().AFoo("hi", BFoo);
}
void BFoo(//could be anything)
{
}
我知道我可以使用
Action
或通过实现委托来做到这一点(如在许多其他SO帖子中所看到的),但是如果B类中函数的签名未知,又如何实现? 最佳答案
您需要传递一个delegate
实例; Action
可以正常工作:
internal void AFoo(string s, Action doOtherThing)
{
if (something)
{
//do something
}
else
doOtherThing();
}
如果
BFoo
是无参数的,它将按照您的示例编写:new ClassA().AFoo("hi", BFoo);
如果需要参数,则需要提供它们:
new ClassA().AFoo("hi", () => BFoo(123, true, "def"));
关于c# - 如何将任何方法作为另一个函数的参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8638547/