【问题标题】:Visual Basic reduce the number of iterations in a for loop?Visual Basic 减少 for 循环中的迭代次数?
【发布时间】: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


【解决方案1】:

为了解决这个问题,您可以从最后一个元素开始,然后往下走(如下面的代码所示) 不注意删除迭代

For x = lstOut.Items.Count - 1 To 0 Step -1
    If lstOut.Items.Item(x).substring(11, 10) <> studentField.sName Then
        lstOut.Items.RemoveAt(x)
    End If
Next

【讨论】:

  • 但是,我现在看到上面 cmets 中的@TechGnome 之前也说过
  • 我还是看的更准了下。我更喜欢更重视一个好的解决方案,也给作者点赞。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 2013-12-14
  • 2012-10-27
  • 2012-08-07
  • 2014-08-24
  • 2019-10-17
相关资源
最近更新 更多