当一个数组是多维数组。并且每维的上下标都不定的情况下。我们如何去遍历整个数组呢?我不知道大家都有什么奇招妙法。我昨天亲自写了一个程序,用于遍历一个未知的数组。只知道他是一个数组,并且里面存储的是字符串。程序很简单。就是首先获得 数组的 秩,然后获得每维的长度和上下标,以及总长度。 再放到循环中处理。
本程序默认数组中的数据类型为System.String。当然如果我们想把程序写的更加完美的话。在处理数据的时候,可以通过 GetType()方法获得它的数据类型。然后再做不同的处理即可。
代码如下:
Dim
a(,,)
As
String
=
{{{
"
NorthSnow
"
,
"
塞北的雪
"
}, {
" "
,
"
中国最大的开发者网络
"
}}, {{
"
CRC
"
,
"
长春轨道客车股份有限公司
"
}, {
"
BEC
"
,
"
剑桥商务英语
"
}}, {{
"
Net_Lover
"
,
"
孟子E章
"
}, {
"
China
"
,
"
中华人民共和国
"
}}}
Dim
i
As
Integer
Dim
j, k, l, m, n
As
Integer
Dim
qq(,)
As
Integer
Dim
pp()
As
Integer
Dim
rr(,)
As
Integer
ReDim
rr(a.Rank
-
1
,
1
)
l
=
1
'
返回数组的总长度, 也可以通过 Length 属性 或者 LongLength 返回
For
i
=
0
To
a.Rank
-
1
l
=
l
*
(a.GetUpperBound(i)
-
a.GetLowerBound(
0
)
+
1
)
rr(i,
0
)
=
l
rr(i,
1
)
=
a.GetUpperBound(i)
-
a.GetLowerBound(
0
)
+
1
Next
ReDim
qq(l
-
1
, a.Rank
-
1
)
'
返回存储
ReDim
pp(a.Rank
-
1
)
For
i
=
0
To
a.Rank
-
1
k
=
0
k
=
0
For
m
=
1
To
rr(i,
0
)
/
rr(i,
1
)
For
j
=
a.GetLowerBound(i)
To
a.GetUpperBound(i)
For
n
=
1
To
l
/
rr(i,
0
)
qq(k, i)
=
j
k
=
k
+
1
Next
Next
Next
Next
Dim
str1
As
New
System.Text.StringBuilder
Dim
arrTemp()
As
Integer
ReDim
arrTemp(a.Rank
-
1
)
For
i
=
0
To
l
-
1
For
j
=
0
To
a.Rank
-
1
arrTemp(j)
=
qq(i, j)
Next
str1.Append(a.GetValue(arrTemp))
str1.Append(vbCrLf)
Next
MsgBox
(str1.ToString)