0

假设我想使用它们的参数准备一些List<Action> listOfMethods 或更好List<Func> listOfMethods的参数以供以后使用:

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

下面添加方法的方式会导致我不想要的立即执行:

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

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

4

1 回答 1

2

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

当你写这行时:

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

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

喜欢你的街区

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

可能在这个块上,动作被触发了。

于 2013-11-08T16:30:18.170 回答