【发布时间】:2013-03-07 15:51:48
【问题描述】:
我有以下简单代码:
static void Main(string[] args)
{
int j = 0;
Func<int> f = () =>
{
for (int i = 0; i < 3; i++)
{
j += i;
}
return j;
};
int myStr = f();
Console.WriteLine(myStr);
Console.WriteLine(j);
Console.Read();
}
根据我在涉及闭包时所读到的内容,编译器创建了一个新类型,以便它可以存储捕获的变量并维护对它的引用。但是,当我运行以下代码时,两个打印行都显示 3。我期待 0 和 3,因为匿名方法在编译器生成的类中有自己的变量。那为什么还要修改外部变量呢?
【问题讨论】: