方法运行另一种方法

时间:2015-06-25 05:40:25

标签: c# .net

是否可以使用run()运行另一种方法?

public void a(int a)
{
    // Method1
}

public void b(int b)
{
    // Method2
}

//how to run code below
public void run(? b(23))  <--can be change to a or b 
{
    b(23);
}

编辑:如果我想从方法中返回值,该怎么办?

public static int a(int a)
{
    // Method1
}

public static int b(int b)
{
    // Method2
}

//how to run code below
public static int run(? b(23))  <--can be change to a or b 
{
    b(23);
}

3 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点。一种方法是像这样定义run方法:

public void run(Action action)
{
    action.Invoke();
}

然后使用:

执行一个方法或另一个方法
run(() => a(3));

run(() => b(5));

如果要返回值,可以分两步执行:

int r = 0;
run(() => r = b(3));

或切换到Func<>

public T run<T>(Func<T> method)
{
    return method.Invoke();
}

然后同样称呼它:

var r = run(() => b(3));

答案 1 :(得分:1)

你在谈论delegates吗?您可以使用Action委托来实现您想要的目标:

    private static void a(int arg)
    {
        Console.WriteLine("a called: " + arg);
    }

    private static void b(int arg)
    {
        Console.WriteLine("b called: "+arg);
    }

    public static void run(Action<int> action, int arg)
    {
        action(arg);
    }

    private static void Main(string[] args)
    {
        run(a, 1);
        run(b, 2);
        Console.ReadLine();
    }

答案 2 :(得分:0)

public void run(Action<int> b)
{
    b(23)
}
run(a);
run(b);