【发布时间】:2012-02-29 11:12:52
【问题描述】:
foreach(var category in categories) {
a.AddRange(_db.Articles.Where(c => c.Categories.Contains(category)));
}
代码运行良好,但我收到一条关于“访问修改后的闭包”的警告,参考 lambda 表达式中使用的 category。
问题:在这种情况下是否有任何后果的警告?
【问题讨论】:
-
见this related question。它也可能有帮助。
-
嗯,SO 中有十几个“Access to Modified Closure”命中,其中任何一个都回答了这个问题。
-
@RaymondChen 有,但他们没有解决 lambda 上下文是我问的唯一原因。我理解闭包的想法,只是想看看在这种奇怪的情况下它是否意味着在 LINQ 的上下文中更具体的东西。
-
c# 5 更改此行为以使类别变量具有当前迭代中的值而不是最后一个值。 iomagazine.com/Articles/2012/11/01/More-Than-Just-Async.aspx?Page=1