1

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

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 维数组的函数调用?

4

3 回答 3

4

您正在创建一个空数组并且没有将任何数据放入其中。您不需要在接收数组上创建边界,执行类似的操作并确保数组类型与 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
于 2012-10-20T18:34:56.123 回答
1

当你这样做

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

您正在尝试访问不存在的数组元素。假设数组有 5 个元素(每个元素包含 2d 数组)。msgLen 将是 5。现在,您要访问“值”中的八个元素,因为您说的是 msgLen + 2。因为只有 5 个元素,所以这是行不通的。

于 2012-10-20T18:29:06.730 回答
0

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

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

暗值(msgLen + 2, 1, 1)作为字符串

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

暗值(tbText.Text.Length + 2, 1, 1)作为数组

于 2012-10-20T18:23:00.620 回答