2012-03-26 81 views
0

我試圖使具有鋸齒狀陣列,如何製作多維鋸齒陣列?

  • 3列
  • 分別與5,4,4行
  • 各自具有2行
  • 具有不同數量的行,例如6,9,5,6,4

我有第一部分設置,但我不知道如何到另一個鋸齒陣列的水平。

Dim potentialStructure()() As Short = {New Short() {0, 1, 2, 3, 4}, New Short() {0, 1, 2, 3}, New Short() {0, 1, 2, 3}} 

而我將如何訪問一個元素在說,最低級別?謝謝!

+0

可能重複,這應該很容易谷歌:http://stackoverflow.com/questions/4255308/building-a-multidimensional-array-in-vb-net – 2012-03-26 04:55:37

+0

鋸齒陣列是不一樣的,謝謝。 – Meowbits 2012-03-26 04:57:44

+0

不用擔心,直到有人回答檢查這篇文章:http://msdn.microsoft.com/en-us/library/2s05feca.aspx – 2012-03-26 05:10:51

回答

0

我剛剛發現了你的問題,所以你現在可能已經解決了它。如果不是,我正在玩的東西中的以下摘錄可能會有所幫助。這裏我有一個規則的二維數組,裏面有一個鋸齒形的二維數組。我相信你可以去掉你不需要的位,並理解與你的需求相關的位。

我有一個結構,其包括一個交錯數組:

Structure Sabc 

    Dim def()() As Long 
    Dim ghi As String 

End Structure 

我有這些結構的非鋸齒2D陣列:

Dim abc(,) As Sabc 

我可以在計算ABC所需要的尺寸我的程序開始:

ReDim abc(sizeD1abc, sizeD2abc) 

我可以輕鬆訪問abc元素中的簡單變量:

With abc(crntD1abc, crntD2abc) 
    .ghi = "Example" 
End With 

鋸齒狀陣列的第一維度總是有一個上限的3.我設置它,以便:

With abc(crntD1abc, crntD2abc) 
    .def = New Long(3)() {} 
End With 

我避免使用使用ReDim更經常的是必要的,因爲它是一個資源飢餓命令。在這裏,我初始化並將元素數量增加10,但是我選擇的值取決於我期望數組的大小以及實際大小可能會有所不同。

With abc(crntD1abc, crntD2abc) 
    .def(crntD1def) = New Long(9) {} 
End With 
crntD2def = -1 

下增加了更多的元素,如果我存儲值之前需要他們:

With abc(crntD1abc, crntD2abc) 
    crntD2def +=1 
    If crntD2def > UBound(.def(crntD1def)) Then 
    ReDim Preserve .def(crntD1def)(UBound(.def(crntD1def)) + 10) 
    End If 
    .def(crntD1def)(crntD2def) = expression 
End With 

當我完成後,我放棄了多餘的元素:

With abc(crntD1abc, crntD2abc) 
    If crntD2def < UBound(.def(crntD1def)) Then 
    ReDim Preserve .def(crntD1def)(crntD2def - 1) 
    End If 
End With