通常、 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