38 小心闭包中的陷阱
static void Main(string[] args) { List<Action> lists = new List<Action>(); for(int i = 0; i < 5; i++) { Action t = () => { Console.WriteLine(i.ToString()); }; lists.Add(t); } foreach(Action t in lists) { t(); } }
修改:
static void Main(string[] args) { List<Action> lists = new List<Action>(); for(int i = 0; i < 5; i++) { int temp = i; Action t = () => { Console.WriteLine(temp.ToString()); }; lists.Add(t); } foreach(Action t in lists) { t(); } }
Stay hungry, stay foolish

浙公网安备 33010602011771号