当程序完成FOR状态时,计数器大于结束编号。我知道,最后(在下一个之后)计数器具有相同的值然后结束值(对于计数器= 1到结束)。有人可以解释一下。
Dim all_lines = 5
Dim line As Integer
Label1.Text = ""
For line = 1 To all_lines
Label1.Text += line & "/" & all_lines & Chr(13)
Next
Label1.Text += line & "/" & all_lines & Chr(13)
结果:
1/5
2/5
3/5
4/5
5/5
6/5
答案 0 :(得分:1)
循环计数器基本上在Next
语句处递增,然后根据For
语句的限制进行测试。如果它不大于上限,则进入循环,否则退出。它以这种方式发生,因为您可以指定大于1的Step
,并且循环不希望提前计算当前循环计数器值加上Step
值是否超过上限。它只是等到循环计数器实际包含该值并然后测试它。
重要的是要意识到For
循环实际上只是语法糖,而编译的代码基本上是Do
循环。如果您将代码编写为Do
循环,那么循环计数器超出上限的原因就更明显了:
Dim all_lines = 5
Dim line As Integer
Label1.Text = ""
line = 1
Do While line <= all_lines
Label1.Text += line & "/" & all_lines & Chr(13)
line += 1
Loop
Label1.Text += line & "/" & all_lines & Chr(13)
在绝大多数情况下,你真的不应该在循环外使用循环计数器。这意味着你不应该在循环之外声明它,即这样做:
For i As Integer = 0 To upperBound
而不是:
Dim i As Integer
For i = 0 To upperBound
在任何情况下,你实际上需要在循环外使用循环计数器,这是因为循环正在进行搜索,因此你应该在循环中有一个Exit For
语句来阻止循环计数器进一步增加。
答案 1 :(得分:0)
它是循环外的最后一行:
Label1.Text += line & "/" & all_lines & Chr(13)
删除它。
代码应该是:
Dim all_lines = 5
Dim line As Integer
Label1.Text = ""
For line = 1 To all_lines
Label1.Text += line & "/" & all_lines & Chr(13)
Next
拥有额外的一行会导致您的问题。 &#34;线&#34;将等于6以便退出循环,并且你正在对它进行操作 - 在循环之外:
Label1.Text + = line&amp; &#34; /&#34; &安培; all_lines&amp; CHR(13)
是的,您将获得您正在体验的结果。只需删除最后一行代码。