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

发布于 2024-09-12 20:34:35 字数 240 浏览 1 评论 0 原文

如果我有一段这样的代码:

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

    // run method passed in to DoOpertions()

    executeC();

}

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

谢谢

If I have a piece of code such as this:

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

    // run method passed in to DoOpertions()

    executeC();

}

Is it possible to pass in a method as a paramter? The method may have X number of parameters itself?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

晚风撩人 2024-09-19 20:34:35

您可以通过代表。委托是一个方法指针,与其引用的方法具有相同的签名。

如需了解更多信息,请访问代表

You can pass a delegate. Delegate is a method pointer, with the same signature as the method it is referencing.

See more at Delegates.

心头的小情儿 2024-09-19 20:34:35
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);
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);
随风而去 2024-09-19 20:34:35

只是为了补充 Nenad 的答案,.Net 框架中有许多内置委托,您应该尝试尽可能多地使用它们,而不是重新发明自己的委托来做同样的事情。

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

Just to add to Nenad's answer, there are a number of built-in delegates in the .Net framework which you should try to use as much as possible, rather than re-inventing your own delegates that do the same thing.

Use the Action delegate if the delegate doesn't have a return value, otherwise use the Func delegates, each are overloaded with up to 4 input parameters.

指尖上的星空 2024-09-19 20:34:35

是的,您可以使用该类型的参数定义委托和 DoOperations() 函数。 在此处输入代码

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

        asFunction("hello1", "hello2");

}

yes you can define delegate and DoOperatios() function with argument of that type. enter code here

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

        asFunction("hello1", "hello2");

}
久光 2024-09-19 20:34:35

当然可以,对于不需要的参数 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

Sure it is, for no parameters you want 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文