【发布时间】:2011-02-05 04:59:21
【问题描述】:
我有最新的 ReSharper 5.0 版本 (1655),我在以下代码中遇到了“访问修改后的闭包”的建议:
var now = new DateTime(1970, 1, 1);
var dates = new List<DateTime>();
dates.Where(d => d > now);
...
now = new DateTime();
并且 lambda 表达式中的 now 带有警告下划线。
我很确定这是一个 ReSharper 错误,但真的是这样吗?
编辑:我应该检查得更好,代码后面有一个分配给now。
EDIT 2 下面 Jon Skeet 的 answer 几乎回答了这个问题,但以下内容呢:
var query = dates.Where(d => d > now).ToList();
这不应该通过立即执行查询来解决问题吗?
【问题讨论】:
-
只是在那个代码上?在这些行之后没有分配给“现在”?
-
@Jon Skeet 你说得对,几行后面有一个作业!我会修改问题。
标签: c# lambda resharper closures