[英]Method passed in as parameter to a Method C#2.0
如果我有一段这样的代码:
private void DoOperations(//method passed in)
{
executeA();
executeB();
// run method passed in to DoOpertions()
executeC();
}
是否可以将方法作为参数传递? 该方法本身可能具有X个参数?
谢谢
您可以传递一个代表。 委托是一个方法指针,具有与其所引用方法相同的签名。
在Delegates上查看更多内容。
delegate void FunctionX(params object[] args);
private void DoOperations(FunctionX executeX)
{
executeA();
executeB();
executeX("any", "number", "of", "params");
executeC();
}
void MyFunction(params object[] p)
{
// do stuff
}
DoOperations(MyFunction);
只是为了补充Nenad的答案,.Net框架中有许多内置的委托,您应该尝试使用它们,而不是重新发明自己的代表来做同样的事情。
如果委托没有返回值,请使用Action委托;否则,请使用Func委托,每个委托最多包含4个输入参数。
当然可以,对于没有参数的Action
[1]
private void DoOperations(Action action)
{
action();
}
//usage
DoAction( new Action(SayHello) );
private void SayHello()
{
Console.WriteLine("Hello World")
}
是的,请使用匿名函数 。
是的,您可以使用该类型的参数定义委托和DoOperatios()函数。 enter code here
delegate void AsFunction(string str, string str);// as many arguments as you want
public DoOperations(AsFunction asFunction)
{
asFunction("hello1", "hello2");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.