码迷,mamicode.com
首页 > Windows程序 > 详细

C#的闭包

时间:2016-02-18 13:34:49      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

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

 

 

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

 

 

先看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

技术分享

 

 

技术分享

 



 

 

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

技术分享

 

C#的闭包

标签:

原文地址:http://www.cnblogs.com/magicianlyx/p/5197797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!