VB如何从函数返回和接收三维数组

时间:2012-10-20 18:16:07

标签: vb.net multidimensional-array

我遇到了如何使用多维数组的问题。我有一个功能:

Public Function findCheckDigit(ByVal text As String) As String(,,)
    Dim msgLen As Integer = text.Length
    Dim value(msgLen + 2, 1, 1) As String
    ...
    ...
    ...
    Return value
End Function

下面我尝试调用此函数:

Private Sub bGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bGenerate.Click
        Dim value(tbText.Text.Length + 2, 1, 1) As Array

        value(tbText.Text.Length + 2, 1, 1) = findCheckDigit(tbText.Text)  <--- Here is a problem

        MsgBox(value(0, 1, 0))  ' Return empty in any position
    End Sub

我确定这个地方的问题但是如何实现我的函数调用另一个具有相同大小的三维数组?

3 个答案:

答案 0 :(得分:4)

您正在创建一个Empty数组,而不是将任何数据放入其中。您不需要在接收阵列上创建边界,执行类似的操作并确保阵列类型与Luke94之前提到的相同。

Public Function findCheckDigit(ByVal text As String) As String(,,)
    Dim msgLen As Integer = text.Length
    Dim value(msgLen + 2, 1, 1) As String
    value(0, 0, 0) = "Hello"

    Return value
End Function

Private Sub bGenerate_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim value(,,) As String

    value = findCheckDigit(tbText.Text) 

    MsgBox(value(0, 0, 0))  

End Sub

答案 1 :(得分:1)

当你这样做时

Dim value(msgLen + 2, 1, 1) As String

您正在尝试访问不存在的数组元素。假设该数组有5个元素(每个元素包含2d数组)。 msgLen将是5.现在,你想要访问“value”中的八个元素,因为你说的是​​msgLen + 2.那不行,因为只有5个元素。

答案 2 :(得分:0)

我不确定我是否理解你的问题。所以这是我的建议

在findCheckDigit函数中,将Array声明为String

  

昏暗值(msgLen + 2,1,1)As String

但是在Click Listener中你创建了一个数组

  

昏暗值(tbText.Text.Length + 2,1,1)As Array