包含方法的数组

时间:2011-10-10 11:32:02

标签: c# arrays methods

我想知道你是否可以创建一个数组或一个List<>包含方法。我不想使用开关或许多if语句。

由于

4 个答案:

答案 0 :(得分:14)

你去吧

List<Action> list = new List<Action>();
list.Add( () => ClassA.MethodX(paramM) );
list.Add( () => ClassB.MethodY(paramN, ...) );

foreach (Action a in list) {
    a.Invoke();
}

答案 1 :(得分:7)

是的,可以有这样的数组或列表。根据输入或输出参数的数量,您可以使用类似

的内容
List<Func<T1, T2, TReturn>>

Func<T1, T2, TReturn>类型的实例是类似

的方法
TReturn MyFunction(T1 input1, T2 input2)

Take a look at the MSDN.

答案 2 :(得分:1)

如果您尝试更换开关,则Dictionary可能比List

更有用
var methods = new Dictionary<string, Action>()
              {
                  {"method1", () => method1() },
                  {"method2", () => method2() }
              };

methods["method2"]();

我考虑到这一点并将语句切换为代码气味,它们通常可以是replaced by polymorphism

答案 3 :(得分:1)

如果你不想使用列表

,也许你想尝试这个
public    Action[] methods;

private void methodsInArray()
{

    methods= new Action[2];
    methods[0] = test ;
    methods[1] = test1;
}

private void test()
{
    //your code
}

private void test1()
{
    //your code
}