我正在尝试增加二维数组的x值,但我一直收到此错误。
'ReDim' can only change the rightmost dimension
我需要在维护数组数据的同时执行此操作。这是我的代码。
Dim x As Integer = 0
Dim y As Integer = 0
While reader.Read()
ReDim Preserve catagoryInfo(x, 2)
catagoryInfo(x, y) = reader.GetString(0)
y += 1
catagoryInfo(x, y) = reader.GetString(1)
x += 1
y = 0
End While
答案 0 :(得分:3)
在多维数组中,您可以在使用“保留”时仅更改最后一个维度。如果您尝试更改任何其他维度,则会发生运行时错误。 您的代码中的一部分实际上并不是最理想的,因为您计划在每个循环中重新划分数组。使用保留更加严重是因为不仅运行时分配了一个新数组,而且它还应该从旧数组复制到新数组。
在你的情况下,最好声明一个像这样的简单类
Public Class CategoryInfo
Public info1 As String
Public info2 As String
End Class
然后使用List(Of CategoryInfo)
Dim infos as List(Of CategoryInfo) = new List(Of CategoryInfo)()
While reader.Read()
Dim nf As CategoryInfo = new CategoryInfo()
nf.info1 = reader.GetString(0)
nf.info2 = reader.GetString(1)
infos.Add(nf)
' if you like the all-in-one-line coding style you could also write the above in this way
' infos.Add(New CategoryInfo With {.info1=reader.GetString(0), .info2=reader.GetString(1)} )
End While
现在,如果你真的需要将数据放在字符串数组中,你可以编写
Dim categoryInfo(infos.Count, 2) as String
for x = 0 to infos.Count -1
categoryInfo(x,0) = infos(x).info1
categoryInfo(x,1) = infos(x).info2
next
这仍然不是最优的,因为您对数据进行了两次循环,但至少可以根据需要获取数据。