被问到闭包是什么。以前似乎很少接触这个概念,补了下。
看了这篇博客: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”.
猜测部分,等待以后再验证。