C#闭包问题

来源:互联网 发布:股票app制作软件 编辑:程序博客网 时间:2024/05/29 07:36
        static void Main(string[] args)        {            List<Func<int>> lstFuncs = new List<Func<int>>();            for (int i = 0; i < 10; i++)            {                lstFuncs.Add( () => { return i; });            }            foreach (var item in lstFuncs)            {                Console.WriteLine(item());            }            Console.Read();        }

上述代码输出的结果是:



        static void Main(string[] args)        {            for (int i = 0; i < 10; i++)            {                Func<int> func = () => { return i; };                Console.WriteLine(func());            }            Console.Read();        }

输出的是 0 - 9.


第二种情况并不是闭包,当你return的是内部function时,就是一个闭包。内部function会close-over外部function的变量直到内部function结束。

原创粉丝点击