繁体   English   中英

作为参数传递给方法C#2.0的方法

[英]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")
}

[1] http://msdn.microsoft.com/en-us/library/018hxwa8.aspx

是的,您可以使用该类型的参数定义委托和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.

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