闭包

闭包 = 方法跑完了,里面的变量却没有消失,还能继续用。
就像:你去饭店吃饭,吃完走了,但桌子没被收走,下次回来还能继续用。

闭包的作用只有 2 个:

1方法跑完,变量不销毁。
Action 计数器()
{
int num = 0; // 这个变量不会消失!

// 返回一个匿名方法
return () =>
{
    num++;
    Console.WriteLine(num);
};

}
var run = 计数器();

run(); // 1
run(); // 2
run(); // 3

2让外面的代码,能安全访问方法内部的变量而且不会被别人乱改。

内部方法可以访问外部变量
外部方法结束后,变量依然存活
变量不会被外界随便修改,非常安全

using System;

class Program
{
static void Main()
{
Action run = Test();

    run(); // 1
    run(); // 2
    run(); // 3
}

static Action Test()
{
    int num = 0; // 闭包变量:方法结束也不消失
    return () => Console.WriteLine(++num);
}

}
Test () 已经执行完了,但里面的 num 没有死,还能被匿名方法继续用。

闭包判断三要素(必须同时满足)
只要同时满足下面 3 条,100% 是闭包!

  1. 里面有一个 匿名方法 / Lambda
    (就是没有名字的方法,像:() => { })
  2. 这个匿名方法 用了外面的变量
    (不是自己定义的,是外面方法里的变量)
  3. 外面的方法 已经结束了,但匿名方法还能继续用那个变量
posted @ 2026-04-11 15:08  菜鸟的奋斗军  阅读(1)  评论(0)    收藏  举报