如何在VB.NET中将一个数组的值复制到另一个数组?

时间:2011-08-02 08:36:26

标签: 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.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)

2 个答案:

答案 0 :(得分:4)

您的陈述

Dim dataarray As string()

只是声明了 dataarray - 您定义dataarray 可以指向一个字符串数组。目前,它并不指向任何地方。您必须创建 new 数组并将其分配给dataarray

最简单的方法是在声明中指定数组的大小:

Dim dataarray(UPPER_BOUND) As String

这将创建一个索引为0到UPPER_BOUND的数组(即,使用UPPER_BOUND + 1个元素)。 (如果您还不知道上限,请不要使用数组,而是使用List(Of String)。)

更多详情:


编辑:您在评论中说明您不知道数组的大小。在这种情况下,您根本不应该使用数组。 根据定义,数组是固定大小的数据结构。(是的,有ReDim Preserve,但它仍然不是一个好主意。)

相反,请使用可调整大小的数据结构,例如List(Of String)。如果你真的需要一个数组,那么之后你可以convert it into an array

答案 1 :(得分:0)

VB数组从0开始而不是1不是吗?这可能是问题吗?

请参阅 - http://patorjk.com/programming/tutorials/vbarrays.htm