【发布时间】:2019-11-18 14:09:21
【问题描述】:
我正在尝试循环浏览列表框,删除不满足所需条件的项目。当前在 for 循环中是否可以减少迭代次数?我尝试在循环中减少最大变量,但这似乎不起作用。任何建议将不胜感激。
For x = 0 To total - 1
If lstOut.Items.Item(x).substring(11, 10) <> studentField.sName Then
lstOut.Items.RemoveAt(x)
total = total - 1
End If
Next
【问题讨论】:
-
您应该避免在迭代列表时修改它。这就是说,一旦您删除位置 x 处的项目,这意味着下一个项目的索引与您当前的索引相同。您可以使用
x -= 1来防止跳过它,但这是一种相当蹩脚的方法。我建议使用循环创建一个新的项目列表,您可以在循环之后将其归因于控件。 -
我认为在这种情况下你最好使用
while循环 -
同意@laancelot ...您肯定不想在这样浏览列表时操纵列表...我猜您在到达时遇到错误结束。最好的方法是反过来。从列表末尾开始,一直到最前面:` for x = total -1 to 0 step -1 `
标签: vb.net