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结束。
本文通过两个具体的代码示例详细解释了C#中闭包的概念及其工作原理,探讨了闭包如何捕获并保持对外部作用域变量的引用,并对比了不同场景下闭包的行为差异。
450

被折叠的 条评论
为什么被折叠?



