我不知道是否有簡單的方法來強制匿名函數的參數評估?對於多線程編程,這是重要的匿名函數的力參數評估
。 例如,當我寫
for(int i=0; i<5; ++i)
{
Task.Factory.StartNew(() => Console.WriteLine(i));
}
大多數人會得到「5」五次。事實上代碼剪斷更可能預期輸出中0到5
一個快速的解決方案如下:
for(int i=0; i<5; ++i)
{
var local = i;
Task.Factory.StartNew(() => Console.WriteLine(local));
}
我覺得生命是更好,如果下面的方法存在以評估匿名函數和返回的所有參數一個邏輯與原點相同:
Action EvaluateParameters(Action action)
任何想法?
謝謝。
他們將如何獲得5次,5次? – 2011-08-24 12:10:22
@CodeMonkey:試試吧,它是真的。 Eric Lippert寫的那篇文章:http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx – Jens
@Jens:啊有趣。 – 2011-08-24 12:13:45