スコープを除いて、VB.NET での変数宣言の位置が重要ではないことを確認していました (この質問の場合)。それらがクロージャーに「持ち上げられた」ときに何が起こるかを確認する方がよいと思いました。私は仕様を読んでいませんが、これらの結果を説明することはできません:
Dim outer As Integer
For i = 1 To 2
Dim inner As Integer
Try
Dim inner2 As Integer
Do
Dim inner3 As Integer
Call Sub()
Dim inner4 As Integer
Console.WriteLine(outer & ", " & inner & ", " & inner2 & ", " & inner3 & ", " & inner4)
outer = i
inner = i
inner2 = i
inner3 = i
inner4 = i
End Sub()
Loop Until True
Finally
End Try
Next
上記の出力:
0, 0, 0, 0, 0
1, 1, 0, 1, 0
inner4
毎回リセットされるのは理にかなっていinnerX
ますinner2
。