在C#中是否可以将执行命令存储在列表中并循环执行

时间:2020-05-27 16:14:25

标签: c# list

可以说我有以下代码行:

 callBacksToSend.Send(vaProxy, "a1", "b1");
 callBacksToSend.Send(vaProxy, "a2", "b2", c2);
 callBacksToSend.Send(vaProxy, "a3", "b3");
 callBacksToSend.Send(vaProxy, "a4", "b4");
.
.
.
 callBacksToSend.Send(vaProxy, "an", "bn", cn);

如何将以上所有内容存储在LIST或数组或Dictionary中,并循环运行? 我需要这样做是因为我想在执行每个命令后进行检查。

2 个答案:

答案 0 :(得分:4)

您可以使用lambda表达式执行类似的操作

var actions = new List<Action>() {
   () => foo.Send(vaProxy, "a1", "b1"),
   () => foo.Send(vaProxy, "a2", "b2", c2)
   //....
};

foreach (var a in actions) {
    a();
    Console.WriteLine("did an action!");
}

答案 1 :(得分:1)

建议不要使用自变量的列表,而不要使用代表的列表

var args = new[] { new[] { "a1", "b1" }, new[] { "a2, "b2" }, ... };
foreach(var arg in args)
    callbacks.Send(vaProxy, arg[0], arg[1]);

如果args可能有所不同,您还可以为其提取一些类:

class Arg
{
    string Item1;
    string Item2;
    int Item3;
    ...
}

现在创建一个列表并循环它们:

var args = new[] { new Arg { ... }, new Arg { ... }, ...};
foreach(var arg in args)
    callbacks.Send(vaProxy, arg);
相关问题