我想知道,是否在以下短代码片段中正确使用了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();
    }


您只是在引用元素。不打电话

07-26 00:22