标签:
最近在和朋友讨论的时候发现了一个很有意思的问题,就是捕捉变量,我现在下面把代码贴出来,大家可以先猜猜结果,然后我们在一起讨论为什么。
1 public class Test 2 { 3 private int k = 0; 4 private List<Action> dg1s = new List<Action>(), dg2s = new List<Action>(), dg3s = new List<Action>(); 5 public void forTest() 6 { 7 for (int i = 0; i < 5; i++) 8 { 9 var j = i; 10 k = i; 11 dg1s.Add(() => Console.WriteLine("i:" + i)); 12 dg2s.Add(() => Console.WriteLine("j:" + j)); 13 dg3s.Add(() => Console.WriteLine("k:" + k)); 14 } 15 } 16 17 public void Show() 18 { 19 20 forTest(); 21 dg1s.ForEach(c => c()); 22 dg2s.ForEach(c => c()); 23 dg3s.ForEach(c => c()); 24 25 } 26 27 }
Main方法:
1 static void Main(string[] args) 2 { 3 new Test().Show(); 4 Console.ReadLine(); 5 }
其实这一块我也有点疑问,希望大家可以在评论中一起探讨。
标签:
原文地址:http://www.cnblogs.com/dazhuangtage/p/5724413.html