在这里看到几个类似的问题,但似乎都不是我的问题...
我理解(或者说我认为我理解了)闭包的概念,并且知道什么会导致Resharper抱怨对修改后的闭包的访问,但在下面的代码中,我不明白我是如何违反闭包的。
因为primaryApps
是在for循环的上下文中声明的,所以当我处理primaryApps
时,primary
不会改变。如果我在for循环外部声明了primaryApps
,那么绝对会有闭包问题。但是为什么在下面的代码中会出现问题呢?
var primaries = (from row in openRequestsDataSet.AppPrimaries
select row.User).Distinct();
foreach (string primary in primaries) {
// Complains because 'primary' is accessing a modified closure
var primaryApps = openRequestsDataSet.AppPrimaries.Select(x => x.User == primary);
Resharper是否只是聪明不够,无法发现这不是一个问题,还是在这里闭包是一个问题的原因我没有看到的?