下面两段代码会各有什么输出呢:
1.
For i As Integer = 0 To 3
Dim j As Integer = 10
Debug.WriteLine(j)
j += 1
Next
2.
For i As Integer = 0 To 3
Dim j As Integer
Debug.WriteLine(j)
j += 1
Next
答案是:
1.
10
10
10
10
2.
0
1
2
3
通过上面的例子可以猜测vb.net处理循环内变量的方式是:1次分配,若有初始化值的将每次循环中都会赋初始化值,否则只在首次分配时初始为(内存)0。
这也说明循环内变量与同样定义的函数范围变量不等效。
因此如果要防止像代码2那样的保持修改效应,应该明确写上变量在循环开始每次应初始化为什么值。