您的位置:首页 > 编程语言 > C#

C#的闭包

2016-02-18 12:18 239 查看
简单的理解:闭包变量是把局部变量的作用域扩展到回调函数,发生在匿名方法注册到委托上,而匿名方法中使用外部的局部变量

说什么都不如图示那么容易明白啊

先看C#的源码

class Program
{
static void Main(string[] args)
{
int i = 9;
Action act = () =>
{
int j = 8;
Console.WriteLine(i + j);
};
i = 10;
act();
Console.WriteLine(i);

}
}


View Code

基础知识:你必须知道C#在一次编译是会为匿名方法生成一个类,类中只有一个方法,是匿名方法的代码

看看ILdasm下的IL





对比一下普通的局部变量使用和上面的闭包变量使用的区别

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: