创建数组并调整它们的大小

时间:2011-01-26 05:03:33

标签: vb.net arrays resize elements

假设我想创建一个包含20个元素的数组,所有元素都设置为默认值(假设为0)

但是后来,在运行时,我可能想要调整数组的大小。我可能会扩大规模,支持30个元素。 10个新元素的默认值为0。

或者我可能想让我的数组更小,只有5.所以我删除了数组的最后15个元素的存在。

感谢。

2 个答案:

答案 0 :(得分:2)

ReDim Preserve将执行此操作,如果数组是在模块级别声明的,则引用它的任何代码都不会丢失引用。我确实认为这是特定于vb的,并且还存在性能损失,因为这也是创建数组的副本。

我没有检查过,但我怀疑上面描述的user274204方法可能是符合CLR标准的方法。 。

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'Initialize your array:
    Dim Integers(20) As Integer

    'Output to the console, and you will see 20 elements of value 0
    Me.OutputArrayValues(Integers)

    'Iterate through each element and assign an integer Value:
    For i = 0 To UBound(Integers)
        Integers(i) = i
    Next

    'Output to console, and you will have values from 0 to 20:
    Me.OutputArrayValues(Integers)

    'Use Redim Preserve to expand the array to 30 elements:
    ReDim Preserve Integers(30)

    'output will show the same 0-20 values in elements 0 thru 20, and then 10 0 value elements:
    Me.OutputArrayValues(Integers)

    'Redim Preserve again to reduce the number of elements without data loss:
    ReDim Preserve Integers(15)

    'Same as above, but elements 16 thru 30 are gone:
    Me.OutputArrayValues(Integers)

    'This will re-initialize the array with only 5 elements, set to 0:
    ReDim Integers(5)
    Me.OutputArrayValues(Integers)


End Sub

Private Sub OutputArrayValues(ByVal SomeArray As Array)
    For Each i As Object In SomeArray
        Console.WriteLine(i)
    Next
End Sub

结束班

答案 1 :(得分:0)

一旦创建,就无法调整数组(或任何其他对象)的大小。

您可以使用System.Array.Resize(ref T [],int)获得类似的效果。然而,这实际上会创建一个新的数组,其中相关的部分被复制,如果有多个对阵列的引用,则可能不是你想要的。