日存档: 18 5 月, 2016

Lambda 函数的一个误解

以前在循环中偶尔会用到lambda函数
eg.

foreach(var v in lst)
{
Jobs.QueueJob(()=>DoSomething(v));
}

看似没什么问题,但如果QueueJob是异步执行,这里的v会只保留一份,通常是lst中最后一个的值;
从而导致DoSomething(lst[lst.Count-1])执行了lst.Count次
🙂