Lambda 函数的一个误解

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

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

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

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>