class Program
{
static Action a;
private static void test()
{
int b = 10;
a = () => Console.WriteLine(b);
b = 11;
}
static void Main(string[] args)
{
test();
a();
Console.ReadKey();
}
}
这是我写的一个有关闭包的代码
首先闭包的概念。内层函数引用的外层函数的变量的最终值。
所以最终输出是b改变的值11。因此我想知道闭包的实现原理是什么,据说是调用lambda表达式是产生了匿名类。
类里会有一个属性int b,由构造函数将test()里的b传进去,可是应该传的是10啊····
上网上查了一下,全都是给的IL代码,可我根本看不懂0.0·······
有没有高手给讲解一下原理!!!