我遇到了如何使用多维数组的问题。我有一个功能:
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
我确定这个地方的问题但是如何实现我的函数调用另一个具有相同大小的三维数组?
答案 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