解决方案 »

  1.   

    看看这个帖子,讲的很细,有例子
    http://www.jb51.net/article/24101.htm
      

  2.   

    匿名方法能使用声明此方法的方法内部定义的局部变量
    void EnclosingMethod()
    {
         string capturedVariable="captured";
         MethodInvoker x=delegate()
         {
                   Console.Write(capturedVariable);
         }
    }
    这种行为就叫闭包
      

  3.   

    <script>
    function a(){
    var x=100;
    function b(){
    return x;
    }
    return b;
    }
    document.write(a()());
    </script>
    这个是一个简单闭包。
    正常情况下函数外面无论如何也访问不了函数内变量但是通过闭包可以实现。
    还有一个问题要知道当函数执行过一次后就会被回收变量也被释放。但是闭包不是这样的也就是说那个x变量始终存在内存当中。
    因为函数没有被回收变量也没有释放这个是和普通函数一个重要区别。
    其实最重要的就是在函数外可以访问函数内变量。x变量相对于a来说是局部变量相对于b来说是全局变量因此b可以访问x
    那么接下来我访问到b函数就可以拿到x变量所以我将x作为b函数的一个返回值这样就可以访问b函数拿到x变量。
    就说这么多吧其实闭包还有很多知识的!你自己私下研究吧。