我想知道,是否在以下短代码片段中正确使用了Lambda表达式?我想随时间存储函数调用,然后在Update_Calls()中一起执行它们。最重要的是,我想问在任何情况下参数var1-3是否保持其值(调用Extern_Func()时的值)?
static List<Action> callsForUpdate = new List<Action>();
public static void Extern_Func(int var1, int var2, float var3)
{
Action callToStore = () => Func(var1, var2, var3);
// Remember in call list
callsForUpdate.Add(callToStore);
}
public static void Update_Calls()
{
for (int i = 0; i < callsForUpdate.Count; i++)
{
callsForUpdate.ElementAt(i);
}
callsForUpdate.Clear();
}
最佳答案
是。他们将被保留。您的Update_Calls有问题。
public static void Update_Calls()
{
for (int i = 0; i < callsForUpdate.Count; i++)
{
callsForUpdate.ElementAt(i)();
}
callsForUpdate.Clear();
}
您只是在引用元素。不打电话