【发布时间】:2017-02-13 12:27:09
【问题描述】:
嗨,我有一个代码,我不明白他的输出应该是什么。
代码如下:
delegate void Employee();
static void Main()
{
IList employees= new List<Employee>();
for(int i=0;i<3;i++)
{
employee.Add( () => Console.Write(i));
}
foreach(var employee in employees)
{
employee();
}
}
谁能帮我解决这个问题?输出是什么?你是如何找到它的?
【问题讨论】:
-
嗯...把代码粘贴到Visual Studio中并执行?
-
Console.Write()将输出到控制台。也许这有帮助:Seeing the console's output in Visual Studio 2010? -
您将打印
333,但您需要将其声明为IList<Employee>而不是IList。 -
@vc74:它们在
foreach中被调用,但它们将使用i的最后一个值 -
如果你不想要这种行为,而是
i的实际值,你不应该“访问这个修改后的闭包”(resharper 警告),而是在你分配值的循环中使用局部变量i
标签: c#