如何在VB.NET中将一个数组的值复制到另一个数组?
我的代码从数据库中读取值,然后将它们放入数组中。我想把这个数组的值复制到另一个数组,但是当我尝试时,它总是抛出一个异常 对象引用未设置为对象的实例 我似乎看不出有什么不对。我如何解决这个问题 我的代码在这里:如何在VB.NET中将一个数组的值复制到另一个数组?,vb.net,arrays,Vb.net,Arrays,我的代码从数据库中读取值,然后将它们放入数组中。我想把这个数组的值复制到另一个数组,但是当我尝试时,它总是抛出一个异常 对象引用未设置为对象的实例 我似乎看不出有什么不对。我如何解决这个问题 我的代码在这里: ' Read values from a database and assign them to an array Dim counter As Integer = 0 Dim reader As MySqlDataReader reader = cmd.E
' Read values from a database and assign them to an array
Dim counter As Integer = 0
Dim reader As MySqlDataReader
reader = cmd.ExecuteReader()
Dim dataarray As string()
While reader.Read()
Dim datatoAdd As string = reader.GetValue(1) & ", " & _
reader.GetValue(2) & ", " & _
reader.GetValue(3) & ", " & _
reader.GetValue(6) & ", " & _
reader.GetValue(7) & ", " & _
reader.GetValue(8) & ", " & _
reader.GetValue(9) & ", " & _
reader.GetValue(10) & ", " & _
reader.GetValue(11)
dataarray(counter) = datatoAdd
End While
reader.Close()
connection.Close()
MessageBox.Show('Data added successfully)
Catch ex As Exception
MessageBox.Show(ex.Message)
VB数组从0开始,而不是从1开始,不是吗?这可能是问题所在吗 请参见您的声明
Dim dataarray As string()
刚刚声明的dataarray——您定义了dataarray
可以指向字符串数组。目前,它没有指向任何地方。您必须创建一个新数组并将其分配给dataarray
最简单的方法是在声明中指定数组的大小:
Dim dataarray(UPPER_BOUND) As String
这将创建一个索引为0到上界(即上界+1个元素)的数组。(如果您还不知道上限,请不要使用数组,而是使用列表(字符串)
。)
更多详情:
- MSDN:
编辑:您在注释中声明不知道数组的大小。在这种情况下,您根本不应该使用数组根据定义,数组是固定大小的数据结构。(是的,有
ReDim Preserve
,但这仍然不是一个好主意。)
相反,请使用可调整大小的数据结构,例如。如果你真的需要数组,你可以在以后使用。@Staypa:你将
Dim dataarray替换为String()
将Dim dataarray(5)替换为String
(如果你希望数组有6个元素,否则,用你想要的上限替换5)。这是一个数据库,所以我不知道数组的大小。我不能确定size@Staypa:那么您不应该使用数组。使用可调整大小的数据结构,例如。如果您真的需要数组,可以在以后使用。@Staypa:ArrayList是一个旧的数据结构。如果可以,请使用列表(字符串)
。它与ArrayList具有相同的功能,但也是类型安全的。@Staypa:但您要求的是数组,而不是ArrayList。;-)使用列表(整型)
(或任何您的值的数据类型),Max()
应该在那里工作。是否可能在While循环中缺少计数器+=1
?这不是本例中的问题。海因茨说得对。(顺便说一句,我没有投反对票)我真的很好奇,我真的应该把这个作为一个评论,因为它不是一个完整的答案。事后诸葛亮是件好事。尽管如此,它可能对一些人有用:)通常他们从零开始。但如果你把它当作从1开始,你会把它搞砸