如何在循环内动态修改For循环的结束整数(无需重启循环)
问题解答:动态更新循环结束值的替代方案
嘿,这个问题我之前在VB开发时也踩过坑!
首先得明确一点:VB的For...Next循环在第一次执行的时候,就会把起始值、结束值和步长都计算并固定下来。也就是说,你代码里的x在循环开始时就被读取并存储为循环的结束条件,之后哪怕在循环里修改x的值,循环也不会理会这个新值——它只会用最开始的那个静态值来判断是否继续循环,这就是你觉得代码没生效的原因。
那有没有不用Exit For重启循环的方法呢?当然有,你可以改用**Do While/Do Until循环**,这种循环每次迭代都会重新判断终止条件,所以能动态响应x的变化。
给你改好的示例代码:
Dim x As Integer Dim i As Integer = 0 ' 手动初始化循环变量,对应原For的起始值0 Do While i <= x ' 这里放你的业务逻辑 If (some conditions) Then x = x + 1 ' 这里修改x后,下一次循环判断会直接用新值 End If i = i + 1 ' 手动控制步长,相当于原For循环的Next Loop
这个方案的核心是:每次循环开始前都会重新检查i <= x这个条件,所以你在循环里对x的修改会立即影响下一次循环的执行,完全不需要重启循环或者用Exit For。
如果一定要坚持用For...Next的话,抱歉,确实没有办法动态更新它的结束值——这是VB这类语言中For循环的固有机制,它就是为固定次数的循环设计的,不支持动态调整终止条件。
内容的提问来源于stack exchange,提问作者Antoine Carpentier
相关产品推荐
相关产品推荐

