2017-10-17 21 views
0
For f = 0 To n 

     b(f + 1) = a(f) 

    Next 

“b”和“a”都是整数数组。我知道如果“a”是一维数组,代码将会正常工作(没有“(f)”)。用(f)简单填写B(f + 1)。但是,如果我使用二维数组,即使我指定了第一个索引。 显然,VB不会允许使用只有一个索引的2d数组。 有没有解决这个错误的方法?仅使用一个索引使用2D阵列

+0

你的意思是如果b是一个二维数组,或者如果a是一个二维数组? – SEarle1986

+0

我的意思是“a”是一个二维数组 –

回答

2

你想要一个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} 
+0

几乎完美,但是当我尝试在锯齿状数组上填充数组时,出现错误“对象引用未设置为对象的实例”。 –

+0

@MohamedYousef:在使用之前,您必须初始化每个包含的数组。例如:'a(0)= New Integer(8 - 1){}'通过'a(0)(7)'初始化第一个数组以保存8个项目('a(0)(0)')。 –