如何制作多维锯齿状阵列?

时间:2012-03-26 03:29:48

标签: vb.net arrays

我正在尝试制作一个有锯齿状的数组,

  • 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}}

我怎样才能访问最低级别的元素?谢谢!

1 个答案:

答案 0 :(得分:0)

我刚刚发现了你的问题,所以你现在可能已经解决了。如果没有,我正在玩的东西的以下摘录可能会有所帮助。在这里,我有一个常规的2D数组,里面有锯齿状的2D数组。我相信你可以删除你不需要的位,并理解与你的要求相关的位。

我有一个包含锯齿状数组的结构:

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
相关问题