闭包(closure)

被问到闭包是什么。以前似乎很少接触这个概念,补了下。

看了这篇博客:What's in a closure.

总结起来,宿主方法(parent method)体内部的匿名方法,可以调用宿主方法体内的局部变量。原因大概是该匿名方法绑定的是宿主方法方法体和其内部的变量。进一步推测,可能匿名方法指向了他的宿主方法的引用。

 

delegate void Action();

static void Main(string[] args)
{
  int x = 0;

  Action a = delegate { Console.WriteLine(x); };

  x = 1;

  a();
}

上面的打印出来的是 “1”而不是“0”.

 

猜测部分,等待以后再验证。

posted @ 2014-02-27 23:16  悠哉游哉  阅读(183)  评论(0编辑  收藏  举报