将操作添加到列表以供稍后执行

时间:2013-11-08 16:14:54

标签: c# delegates

假设我想准备一些List<Action> listOfMethods 或者更好List<Func> listOfMethods及其参数 稍后执行使用:

foreach (var action in listOfMethods)
{
    action.Invoke();                 
}

以下添加方法的方法导致立即执行,我不想要:

listOfMethods.Add(() => processor.DoStuff(m1Parameters));

有没有办法在不导致立即执行的情况下添加方法及其参数?

1 个答案:

答案 0 :(得分:2)

当你创建一个像() => processor.DoStuff(m1Parameters)这样的lambda表达式时,lambda的主体就不会被执行了。

当你写下这一行时:

listOfMethods.Add(() => processor.DoStuff(m1Parameters));

方法DoStuff它没有被执行,但是在这个块之后,可能会有一些东西触发了lambda表达式。

喜欢你的块

foreach (var action in listOfMethods)
{
    action.Invoke();                 
}

可能在这个街区,行动正在被解雇。