在VB.NET中在运行时调整数组大小

l--*_*''' 10 vb.net arrays

在运行时的Windows窗体应用程序中,每次添加元素时,我都会调整数组的大小.所以首先我必须调整大小size + 1,然后添加一个成员到这个索引.我该怎么做呢?

Joe*_*orn 24

可以使用该ReDim声明,但这确实不是您的最佳选择.如果你的数组经常会改变大小,特别是听起来你只是附加大小,你应该使用泛型List(Of T)或类似的集合类型.

您可以像使用数组一样使用它,并且添加项目到最后也是如此简单 MyList.Add(item)

要使用通用列表,请添加Imports System.Collections.Generics到文件顶部.然后,您将声明一个新的整数列表,如下所示:

Dim MyList As New List(Of Integer)()
Run Code Online (Sandbox Code Playgroud)

或者像这样的字符串列表:

Dim MyList As New List(Of String)()
Run Code Online (Sandbox Code Playgroud)

你应该明白这个想法.


Jul*_*les 8

建议的ReDim需要此方案的Preserve关键字.

ReDim Preserve MyArray(n)
Run Code Online (Sandbox Code Playgroud)

  • 由于这个问题现在超过30,000个视图,我认为值得注意的是"`Preserve`"关键字实际上不会保留原始数组,而是分配一个全新的数组并复制原始元素一个接一个......如果这是你想要的,这很好,但通常程序员都期待更高效的东西. (3认同)

Cor*_*bel 7

使用通用列表是(如建议的)最好的想法.但是,如果您想要更改数组的大小,则可以使用Array.Resize(ByRef arr, newSize).

ReDim不是一个好(非常糟糕)的想法(VB特有的遗产,非常慢).

  • 好吧,没人提到Array.Resize()所以,我不同意. (2认同)
  • 我同意 `Array.Resize` 应该优于古老的 `ReDim`。坏消息是,两者可能同样缓慢。 (2认同)