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();
            }            
        }

 

posted @ 2016-01-20 17:32  小-黑  阅读(75)  评论(0)    收藏  举报