【发布时间】:2021-03-22 16:21:49
【问题描述】:
我不知道它发生了什么或为什么会发生。在下面的代码中,第一次运行 i = 0。工作正常。最后 i = 2。也很好。但是,由于某种我无法理解的原因,突然 i = 3。这给出了 System.ArgumentOutOfRangeException,我理解,因为列表中只有 4 项。
如何将 i 从 2 变为 3?
noOfSpeedLimiterPositions = speedLimiterPositions.count() '= 4
For i = 0 To noOfSpeedLimiterPositions - 1
speedLimiterPosition = speedLimiterPositions(i)
nextSection = speedLimiterPosition + speedLimiterPositions(i + 1) 'exception thrown here
While speedLimiterPosition < nextSection
rollerSpeedLimiterPositions.add(speedLimiterPosition)
speedLimiterPosition = speedLimiterPosition + 57.5 * 2
End While
MessageBox.Show(i) 'shows 0
i = i + 2
MessageBox.Show(i) 'shows 2
Next
【问题讨论】:
-
noOfSpeedLimiterPositions的值是多少? -
我非常精通 VB.NET,但我什至不知道如果在循环中间更改循环变量的值会发生什么。最好不要这样做,它会导致代码难以理解(如您所见)。如果您想要 1 以外的其他增量,请改用
For ... To ... Step ...。 -
@Heinzi,这行得通。谢谢。
标签: vb.net