当前位置:  开发笔记 > 编程语言 > 正文

如何迭代锯齿状数组?

如何解决《如何迭代锯齿状数组?》经验,为你挑选了2个好方法。

这让我疯狂了好几天.以下为什么不工作?

    Dim arr(3, 3) As Integer

    For y As Integer = 0 To arr.GetLength(0) - 1
        For x As Integer = 0 To arr.GetLength(y) - 1
            arr(y, x) = y + x
        Next
    Next

另外,如果阵列看起来像这样呢?

{ {1, 2, 3},
  {4, 5, 6, 7, 8, 9, 9, 9},
  {5, 4, 3, 2}
}

Joel Coehoor.. 7

因为没有'2'或'3'维度.应该是.GetLength(1)而不是.GetLength(y)

另外:在VB.Net中,数组声明的工作方式略有不同.您在声明中指定的下标是最后一个索引,而不是像C#或C++一样创建的项目数.但是数组仍然像C#或C++一样被索引,而不是像VB6那样的1索引.这意味着如果你从另一种语言转移到VB.Net,你的阵列本能可能是错误的,无论它是哪种语言.在VB.Net中,Dim arr(3,3)As Integer实际上创建了一个4x4数组.



1> Joel Coehoor..:

因为没有'2'或'3'维度.应该是.GetLength(1)而不是.GetLength(y)

另外:在VB.Net中,数组声明的工作方式略有不同.您在声明中指定的下标是最后一个索引,而不是像C#或C++一样创建的项目数.但是数组仍然像C#或C++一样被索引,而不是像VB6那样的1索引.这意味着如果你从另一种语言转移到VB.Net,你的阵列本能可能是错误的,无论它是哪种语言.在VB.Net中,Dim arr(3,3)As Integer实际上创建了一个4x4数组.



2> Jonathan All..:

好吧,你真正需要的是一个"锯齿状阵列".这将允许您拥有一个"包含不同长度的其他数组的数组".

  Dim arr As Integer()() = {New Integer() {1, 2, 3}, New Integer() {4, 5, 6, 7, 8, 9, 9, 9}, New Integer() {5, 4, 3, 2}}

  For x = 0 To arr.GetUpperBound(0)
      Console.WriteLine("Row " & x & " has " & arr(x).GetUpperBound(0) & " columns")
      For y = 0 To arr(x).GetUpperBound(0)
          Console.WriteLine("(" & x & "," & y & ") = " & arr(x)(y))
      Next
   Next

输出:

Row 0 has 2 columns
(0,0) = 1
(0,1) = 2
(0,2) = 3
Row 1 has 7 columns
(1,0) = 4
(1,1) = 5
(1,2) = 6
(1,3) = 7
(1,4) = 8
(1,5) = 9
(1,6) = 9
(1,7) = 9
Row 2 has 3 columns
(2,0) = 5
(2,1) = 4
(2,2) = 3
(2,3) = 2

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有