【问题标题】:How to iterate an array of a dynamic size in a loop如何在循环中迭代动态大小的数组
【发布时间】:2013-12-17 17:44:38
【问题描述】:

我正在使用 VB.NET。

我想要一个名为 A1 的数组,我将在该数组中执行 for 循环。

  1. 在 for 循环的中间,我需要从该 A1 数组中删除一项。
  2. 我知道如果我从 A1 数组中删除该对象,程序将崩溃(超出范围错误消息)。

VB.NET 中的哪个数组变量可以让我执行上述任务?

欢迎使用代码示例!

谢谢。

【问题讨论】:

  • 请显示您尝试使用的代码(从数组中删除某些内容不应导致超出范围的错误,调整大小会)

标签: arrays vb.net loops dynamic for-loop


【解决方案1】:

最简单的方法是使用列表而不是数组(或将您拥有的数组转换为List(of T)。 然后诀窍是从列表的末尾移动到前面,而不是相反。 例如:

Sub Main()
    Dim RndGenerator as New Random
    Dim a As New List(Of Double)
    For i = 0 To 99
        a.Add(RndGenerator.NextDouble() * 10) 'Populate the list
    Next
    For i = a.Count - 1 To 0 Step -1  'This loop performs the deletion.
        If a(i) > 5 Then a.RemoveAt(i)
    Next
    Console.ReadKey() 'Or debugger.Break to look at the result
End Sub

这将使用从 0 到 10 的随机数填充一个列表。然后从列表中删除所有大于 5 的数字。

编辑:

Steven Doggart 关于不使用 VB6 Relics 的好点。编辑代码以改用 System.Random 类。

【讨论】:

  • 这是一个很好的例子,但如果我没有提到最好使用 Random 类而不是旧的 VB6 样式 RandomizeRnd 方法,那我就失职了.另外,值得一提的是,另一种解决方案虽然效率稍低,但是将列表转换为数组,然后循环遍历数组。然后,您可以在不影响循环迭代器的情况下随意更改列表(例如For Each i As Double In a.ToArray())。 +1 虽然是一个很好的答案:)
猜你喜欢
  • 2014-11-06
  • 2015-05-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2020-08-03
  • 2013-07-29
  • 2022-11-12
  • 1970-01-01
相关资源
最近更新 更多