2013-05-10 62 views
1

ReSharper的Access to Modified Closure警告通常是相当有帮助的。我只是注意到,当我打电话的Any方法的内部for each循环,我会,如果我不使用的打开和关闭括号得到一个警告。当我加入(),错误消失。为什么访问修改关闭警告消失时可枚举的方法调用()

是否错误本身消失,或者我只是不小心被骗ReSharper的静态代码分析检测。

Dim groupExists as Boolean 

For each oldPerson in oldData 

    'access to modified closure warning on oldPerson.groupId 
    groupExists = (From newPerson In newData 
        Where newPerson.GroupId = oldPerson.groupId).Any 

    'no closure problem reported 
    groupExists = (From newPerson In newData 
        Where newPerson.GroupId = oldPerson.groupId).Any() 

Next 

当然,我可以把For Each循环中下面的代码并比较newPerson.GroupId到本地声明的变量解决这个问题。

'declare locally to avoid access to modified closure 
Dim groupId as Integer = person.groupId 

回答

3

我认为这是一个Resharper错误,我会在那里提交。不能有在会立即执行,就像Any做了LINQ语句修改关闭。

VB是不是我的母语“,但据我所知括号不应该使在VB.Net任何区别(因为它在VB6那样)。

相关问题