2014-06-13 4 views
0

그래서 2 차원 배열을 2 배열에 넣으려고하지만 배열의 경계 밖으로 인덱스를 계속 가져옵니다. 왜 내가 이걸하는지 묻는 이유는 viewstate 개체에 저장할 수 있기 때문에 지속적으로 데이터를 검색 할 필요가 없기 때문입니다.VB에서 배열 범위를 벗어나는 인덱스

Dim testArray As String() = {} 



testArray(0) = dataArray(0, 1) 

viewstate에 2 차원 배열을 저장하는 방법이 있는지 알려 주시기 :

내가 사용하려고했던 코드

이있다. 감사!

아, 난을 heres dataArray 코드

Private Function getDataArray() As Array 
    Dim x As Integer 
    Dim DT As DataTable 
    Dim TA As New DSOldOrdersTableAdapters.TA 
    DT = getOldOrders() 
    ReDim dataArray(3, DT.Rows.Count - 1) 
    For x = 0 To DT.Rows.Count - 1 
     dataArray(0, x) = DT.Rows(x).Item("SO") 
     dataArray(1, x) = DT.Rows(x).Item("Customer") 
     dataArray(2, x) = DT.Rows(x).Item("ShipBy") 
    Next 
    Return dataArray 
End Function 
+0

배열을 가질 필요? – Psychemaster

+1

어제 게시 한 '인덱스가 배열의 범위 밖에 있습니다'라는 질문과 다른가요? 그렇다면 문제의 코드를 볼 필요가 있습니다. – pmcoltrane

+0

내가 가지고있는 전부는 내가 거기에있는 것입니다. 색인이 배열을 벗어나는 이유를 알아낼 수 없습니다. – user3730539

답변

1
Dim testArray As String() = {} 
testArray(0) = dataArray(0, 1) 

당신은 testArray를 선언하고 그것에 빈 배열을 할당하고 있습니다. 배열의 길이가 0이기 때문에 인데, testArray(0)에 할당하면 인덱스가 범위를 벗어남 예외가 발생합니다.

Dim testArray As String() = {} 
ReDim testArray(0) 
testArray(0) = dataArray(0, 1) 
'or 
Dim testArray As String() = {dataArray(0,1)} 
0

당신이 참조하려는 요소가 배열에 존재하지 않는, 때문에 것 발생하는 오류, 죄송합니다. 배열 색인은 0에서 시작하므로 항상 마지막 요소가 (maxElements - 1) 인 것으로 확인하십시오. 그렇지 않으면 오류가 발생하고이 오류가 표시됩니다.

+0

오류가 발생, 나는 있었어 aArray.length - 1을 테스트 배열에 추가하면서 루핑하면 인덱스 배열이 꺼집니다. 이제 문자 그대로 testArray (0) = dataArray (0, 0), 그 외에는 아무 것도 시도하지 않고 인덱스 배열에서 첫 번째 데이터 조각을 가져 오려고합니다. @afzaal Ahmad Zeeshan – user3730539

+0

배열을 공유 할 수 있습니까? 코드? –

+0

수정 된 원본 게시물 @Afzaal Ahmad Zeeshan – user3730539

1

Dim testArray As String() = {} 

제로

로 설정된 치수 문자열 배열 그래서 testArray 쓸모가 만든 선언 :

당신은 testArray 변수를 ReDim을하거나 할당을 변경해야 적어도 하나의 요소의 치수 지정없이.

testArray(0) = dataArray(0, 1) 

원인을 쓰기
바운드 예외

의 색인 아웃은 아마 당신은 당신의 데이터 테이블 행의 같은 길이의 배열이 필요합니다.
그러나이 컨텍스트에서 배열을 사용하려는 모든 노력은 왜 필요합니까?
목록 (한 문자열)를 사용하면 testArray이어야하고 어디는 모든 장소에 배열로 목록을 사용할 수 있습니다 얼마나 큰 알 필요가 없습니다 이런 식으로 더 나은 솔루션

Dim testValues = new List(Of String)() 
testValues.Add(dataArray(0,1)) 

입니다 지금까지 가지고 무엇

Dim soValue = testValues(0) 

또는

testValues.ToArray() 
관련 문제