2013-05-10 59 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那樣)。

相關問題