2013-01-24 271 views
3

我有通过函数传递二维数组的有趣情况。
数组声明在窗体的级别范围内:
我尝试从VB6中重写我的代码的一部分,我有可行的示例。通过函数传递二维数组

Dim myArray(,) As Double 

然后我得到的,其中阵列是根据数据redimed装了满满一分,这样的事情,象征性的情况:

Public Sub mySub(ByVal myArray(,) As Double) 

    Dim temparray() As Double = {3, 5, 7, 9} 
    For a As Double = 0 temparray.length - 1 
     ReDim Preserve myarray(2, temparray(a)) 
    Next a 

    myArray(1, 5) = 3.14 
    ... etc... 
End Sub 

最后,我想从数组填充和读取数据其他子:

mySub(myArray) 
Debug.Print(myArray(1, 5)) 

在这里,我得到错误信息:

未将对象引用设置为对象的实例。

mySub中的数据填写正确,但在调用子程序中无法看到此数据。
我该怎么做,我怎么能得到这个场景的工作?

+0

在VB.NET中尝试摆脱你的多维/参差不齐的数组。在大多数情况下,你可以用更可读,更不容易出错和更像“List(Of CustomClass)”一样可扩展的东西替换它们。 –

+0

谢谢蒂姆。我会尽快考虑。 –

回答

5

你可以这样做解决这个问题:

Public Sub mySub(ByRef myArray(,) As Double) 
    '... 
End Sub 

您需要引用变量才能有小组之外的变化。

+1

是的,就是这样。非常感谢你! –