【问题标题】:Adding item to an Array 2D将项目添加到 Array 2D
【发布时间】:2013-10-25 09:46:19
【问题描述】:

我正在尝试将项目添加到 Array 2d。

但这会引发异常,消息如下:Redim only can change the dimension which is more to the right

' Create Array 2D

Dim MyArray As String(,) = _
{{"Item 0,0", "Item 0,1"}, {"Item 1,0", "Item 1,1"}, {"Item 2,0", "Item 2,1"}}


' Add Item

ReDim Preserve MyArray(MyArray.GetUpperBound(0)+1, MyArray.GetUpperBound(1)+1)
MyArray(MyArray.GetUpperBound(0), MyArray.GetUpperBound(1) - 1) = "Item 3,0"
MyArray(MyArray.GetUpperBound(0), MyArray.GetUpperBound(1)) = "Item 3,1"

我做错了什么?

另外...我可以像这样同时设置两个维度?:

ReDim Preserve MyArray(MyArray.GetUpperBound(0)+1, MyArray.GetUpperBound(1)+1)
MyArray(lastitem) = {"Item 3,0", "Item 3,1"}

更新:

嗯...尝试一下,我不明白,代码不起作用:

' Add Item

Dim MyArray2(MyArray.GetUpperBound(0) + 1, MyArray.GetUpperBound(1) + 1)(,) As String
MyArray.CopyTo(MyArray2, 0)
MyArray2(MyArray2.GetUpperBound(0), MyArray2.GetUpperBound(1) - 1) = "Item 3,0"
MyArray2(MyArray2.GetUpperBound(0), MyArray2.GetUpperBound(1)) = "Item 3,1"

【问题讨论】:

    标签: .net arrays vb.net syntax multidimensional-array


    【解决方案1】:

    ReDim 文档中所述:-

    使用 Preserve 调整大小。如果您使用 Preserve,则只能调整 数组的最后一个维度,对于每个其他维度,您必须 指定它在现有数组中已有的相同边界。

    例如,如果你的数组只有一维,你可以调整它的大小 维度并仍然保留数组的所有内容,因为 您正在更改最后一个也是唯一的维度。但是,如果您的阵列 有两个或多个维度,您只能更改最后一个的大小 如果你使用 Preserve,维度。

    所以要在多个维度上调整数组的大小,你需要这样的东西:-

    Dim second_array(my_array.GetUpperBound(0) + 1, my_array.GetUpperBound(1) + 1) As String
    
    For i As Integer = 0 To my_array.GetUpperBound(0)
        For j As Integer = 0 To my_array.GetUpperBound(1)
            second_array(i,j) = my_array(i,j)
        Next j
    Next i
    
    my_array = second_array
    

    【讨论】:

    • 感谢您的信息,但问题没有解决,我仍然不知道如何解决它,如果可以,请查看我的更新。
    • @ElektroStudios,你说的很对;我添加了一个可能的解决方案。
    【解决方案2】:

    当您确定需要比现有更大的数组时,您需要定义一个新数组,而不是在第一个维度发生变化时重新调整现有数组,然后复制所有内容。

    Array(2,2) -> Array(2,4) 'ReDim 可以解决这个问题。
    Array(2,2) -> Array(4,2) '创建一个新数组并复制内容

    【讨论】:

    • thnaks 但是......我该怎么做将项目添加到二维数组的通用函数然后我需要自动化数组绑定计算和那些东西。如果可以,请查看我的更新。
    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2019-10-13
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多