0

Item を 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"

私が間違っていることは何ですか?

また...次のように2つのディメンションを同時に設定できますか?:

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"
4

2 に答える 2

2

既存の配列よりも大きな配列が必要であると判断した場合、最初の次元が変更された場合に既存の配列を ReDim するのではなく、新しい配列を定義してから、すべての内容をコピーする必要があります。

Array(2,2) -> Array(2,4) 'これには ReDim が機能します。
Array(2,2) -> Array(4,2) '新しい配列を作成して内容をコピー

于 2013-10-25T10:16:26.780 に答える