c# 闭包

概念:内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止。但该变量提供的值并非变量创建时的值,而是在父函数范围内的最终值。

示例:

class Program
{
static void Main(string[] args)
{
var a = new class1();
var b = a.test();
Console.WriteLine(b());
Console.ReadLine();
}
public class class1
{
public Func<int> test()
{
var a = 30;
return () =>
{
Console.WriteLine(a);
return a;
};
}
}
}

如上示例所示,使用闭包可以让我们在调用test方法结束后,即变量a在方法内的生命周期结束后。再次调用b函数依然能够访问到我们上个函数的变量a的值。

posted @ 2020-09-17 23:23  a2502971  阅读(219)  评论(0编辑  收藏  举报