先看常见的问题
internal class Program { static void Main(string[] args) { var actions = GetSomeAction(); for (int i = 0; i < actions.Count; i++) actions[i](); } static List<Action> GetSomeAction() { var result = new List<Action>(); for (int i = 0; i < 5; i++) result.Add(() => Console.WriteLine(i)); return result; } }
返回结果全是 5 5 5 5 5 并不是正常的想要的 0 1 2 3 4
也许你会说 这就是有问题的呀!那么 什么时候一定有问题?什么情况下又一定没有问题?
有人说 for (int i = 0; i < 5; i++) 使用 foreach, 其实一样的。
标签:闭包,int,actions,++,static,result,经典 From: https://www.cnblogs.com/stweily/p/17788050.html