For f = 0 To n
b(f + 1) = a(f)
Next
“b”和“a”都是整数数组。我知道如果“a”是一维数组,代码将会正常工作(没有“(f)”)。用(f)简单填写B(f + 1)。但是,如果我使用二维数组,即使我指定了第一个索引。 显然,VB不会允许使用只有一个索引的2d数组。 有没有解决这个错误的方法?仅使用一个索引使用2D阵列
For f = 0 To n
b(f + 1) = a(f)
Next
“b”和“a”都是整数数组。我知道如果“a”是一维数组,代码将会正常工作(没有“(f)”)。用(f)简单填写B(f + 1)。但是,如果我使用二维数组,即使我指定了第一个索引。 显然,VB不会允许使用只有一个索引的2d数组。 有没有解决这个错误的方法?仅使用一个索引使用2D阵列
你想要一个Jagged Array。
锯齿状阵列和二维阵列之间的差别在于一个2D阵列作品就像一个坐标系,其中每个项目位于一个特定的x和y坐标。
Array(3, 3):
0 1 2 3
0 A B C D
1 E F G H
2 I J K L
3 M N O P
甲交错数组,但是,是阵列的阵列;这意味着主阵列只有一个维度,但它能够以其自己的大小保存其他阵列。
Array(3)(x):
0 1 2 3 4
0 {A, B}
1 {C, D, E, F, G}
2 {H, I, J}
3 {K}
宣言例如:
'A jagged array capable of holding 32 different 1D arrays.
Dim a As Integer()() = New Integer(32 - 1) {}
初始化子阵列:
'Initializes the first sub-array to hold 8 items.
a(0) = New Integer(8 - 1) {}
访问一个文件:
Dim b As Integer = a(1)(3) 'F
访问整个阵列:
Dim b As Integer() = a(0) '{A, B}
b = a(1) '{C, D, E, F, G}
几乎完美,但是当我尝试在锯齿状数组上填充数组时,出现错误“对象引用未设置为对象的实例”。 –
@MohamedYousef:在使用之前,您必须初始化每个包含的数组。例如:'a(0)= New Integer(8 - 1){}'通过'a(0)(7)'初始化第一个数组以保存8个项目('a(0)(0)')。 –
你的意思是如果b是一个二维数组,或者如果a是一个二维数组? – SEarle1986
我的意思是“a”是一个二维数组 –