2013-01-24 3 views
3

함수를 통해 2 차원 배열을 전달하는 데 흥미로운 상황이 있습니다.
배열은 양식의 수준 범위에서 선언됩니다.
VB6에서 코드의 일부를 다시 작성하려고합니다. 그런 다음함수를 통해 2 차원 배열 전달

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 

을 그리고 마지막으로, 나는에서 배열에 데이터를 입력하고 읽고 싶습니다 다른 하위 :

,536 :

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

예, 그게 전부입니다. 고마워요! –