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

时间:2010-08-02 15:00:10

标签: c# c#-2.0

如果我有一段代码如下:

private void DoOperations(//method passed in)
{
    executeA();
    executeB();

    // run method passed in to DoOpertions()

    executeC();

}

是否可以将方法作为参数传递?该方法本身可能有X个参数?

由于

6 个答案:

答案 0 :(得分:4)

您可以传递委托。 Delegate是一个方法指针,与它引用的方法具有相同的签名。

请参阅Delegates

答案 1 :(得分:2)

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);

答案 2 :(得分:1)

只是为了添加Nenad的答案,.Net框架中有许多内置代理,你应该尽可能多地尝试使用它们,而不是重新发明你自己的代理做同样的事情。 / p>

如果委托没有返回值,则使用Action委托,否则使用Func委托,每个委托重载最多4个输入参数。

答案 3 :(得分:0)

确实如此,因为没有你想要的参数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

答案 4 :(得分:0)

答案 5 :(得分:0)

是的,您可以使用该类型的参数定义委托和DoOperatios()函数。 enter code here

delegate void AsFunction(string str, string str);// as many arguments as you want
public DoOperations(AsFunction asFunction)
{

        asFunction("hello1", "hello2");

}