2013-01-24 273 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

是的,就是這樣。非常感謝你! –