是否可以使用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);
}
答案 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);