包含方法的数组
本文关键字:数组 方法 包含 | 更新日期: 2023-09-27 18:11:02
我想知道您是否可以创建包含方法的数组或列表<>。我不想使用一个开关或大量的if语句。
谢谢
好了
List<Action> list = new List<Action>();
list.Add( () => ClassA.MethodX(paramM) );
list.Add( () => ClassB.MethodY(paramN, ...) );
foreach (Action a in list) {
a.Invoke();
}
是的,可以有这样一个数组或列表。根据输入或输出参数的数量,您可以使用类似
的内容List<Func<T1, T2, TReturn>>
类型Func<T1, T2, TReturn>
的实例是像
TReturn MyFunction(T1 input1, T2 input2)
查看MSDN
如果你想替换一个开关,那么字典可能比列表更有用
var methods = new Dictionary<string, Action>()
{
{"method1", () => method1() },
{"method2", () => method2() }
};
methods["method2"]();
我认为这和switch语句是一种代码气味,它们通常可以用多态性代替。
如果你不想使用列表,可以试试这个
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
}
object[] arproc = new object[2];
arrProc[0] = (string)Fx1();
arrProc[1] = (string)Fx2();