将代码作为参数C#传递

时间:2012-04-30 10:43:42

标签: c# function parameters

我试图将对函数的引用作为参数传递

很难解释

我会写一些示例伪代码

(calling function)

function(hello());

function(pass)
{
   if this = 0 then pass
   else
}

hello()
{
   do something here
}

对不起,如果没有多大意义

但是我试图减少使用过的代码,我认为这是一个好主意。

我怎样才能在C#中做到这一点?

3 个答案:

答案 0 :(得分:6)

您可以使用delegates将代码传递给方法,例如Action delegate

void MyFunction(Action action)
{
    if (something == 0)
    {
        action();
    }
}

void Hello()
{
    // do something here
}

用法:

MyFunction(Hello);

答案 1 :(得分:4)

  

我正在尝试将对函数的引用作为参数传递

     

很难解释

可能很难解释,但实现起来非常简单:下面的代码调用MyFunction将参数化代码作为参数传递给它。

static void MyFunction(Action<string> doSomething) {
    doSomething("world");
}

static void Main(string[] args) {
    MyFunction((name) => {
        Console.WriteLine("Hello, {0}!", name);
    });
}

您可以使用系统提供的委托类型(ActionFunc)或write your own

答案 2 :(得分:0)

以下是一个例子:

using System;

public class Example
{

    public void Method1(Action hello)
    {
        // Call passed action.
        hello();
    }

    public void Method2()
    {
        // Do something here
    }

    public void Method3()
    {
        Method1(Method2);
    }
}