C#中循环中的捕获变量
我遇到了一个关于C#的有趣问题。我有如下代码。
List<Func<int>> actions = new List<Func<int>>();int variable = 0;while (variable < 5){ actions.Add(() => variable * 2); ++ variable;}foreach (var act in actions){ Console.WriteLine(act.Invoke());}
我希望它输出0,2,4,6,8。但是,它实际输出5个10。
似乎是由于所有操作都涉及一个捕获的变量。结果,当它们被调用时,它们都具有相同的输出。
有没有办法解决这个限制,让每个动作实例都有自己的捕获变量?
呼啦一阵风
慕婉清6462132