2012-06-21 54 views
0

好的,所以我习惯于PHP,我可以声明一个多级数组,如$something[0][1] = "test";。我需要能够完成同样的事情,但我使用VB.NET。我将如何做到这一点?VB.NET多维数组

对不起,如果这不是一个多维数组,我可能会错误地调用它,但这就是我想要做的。

谢谢!

+0

如果您以前使用过PHP,那么使用C#代替VB.NET可能会更好 –

+0

@AlvinWong为什么? – sloth

+0

@BigYellowCactus PHP的语法比VB.NET更类似于C# –

回答

1

多维数组在VB.Net ...

Dim twoDimensionalArray(10, 10) As String 
twoDimensionalArray(0, 1) = "test" 

我很少使用数组,但是。通常可以使用Lists,Dictionaries或两者的组合来实现更优雅的解决方案。

更新

(10, 10)是数组的上限(大小实际上是11,0到10)。如果您未指定边界,则您需要在数组中添加Redim Preserve。这是关于列表的一件好事,您不必指定初始大小,并且可以自由添加它们。

下面是清单列表的简单示例。

Dim listOfLists As New List(Of List(Of String)) 
listOfLists.Add(New List(Of String)(New String() {"a", "b", "c"})) 
listOfLists.Add(New List(Of String)(New String() {"d", "e", "f"})) 
listOfLists.Add(New List(Of String)(New String() {"g", "h", "i"})) 
'listOfLists(0)(0) = "a" 
'listOfLists(0)(1) = "b" 
'listOfLists(2)(1) = "h" 
+0

我假设(10,10)是该数组中的项目数量。有没有办法做到这一点,而没有指定? 此外,你能否简单地解释一下如何用列表实现我想要的结果? – DannyF247

+1

@ DannyF247列表通常是一个包含对象的单维数组。因为.NET 2.0引入了泛型,所以你可以创建一个带有指定类型的List(例如'List(Of T)),如果你愿意的话,你甚至可以将List存储在一个列表中(例如'List(Of List(Of String) )'(但是我还没有遇到过这种情况) – Nicholas

+0

不,10,10是数组的上限,而不是数组的大小,实际上你创建了11×11的数组。 –

0

只要与阵列

Dim arr(0)() As String   '** array declaration 
For i As Integer = 0 To 100  '** Outer loop (for the 1st dimension) 
    For j As Integer = 0 To 1  '** inner loop (for the 2nd dimension) 
     ReDim Preserve arr(i)  '** Resize the first dimension array preserving the stored values 
     ReDim Preserve arr(i)(j) '** Resize the 2nd dimension array preserving the stored values 
     arr(i)(j) = String.Format("I={0},J={1}", i, j) '** Store a value 
    Next       
Next 

在.NET阵列的动态调整大小的纯样品通常是静态的,不会被自动调整大小。 (例如在JavaScript等)因此,每次你想添加一个新的项目时手动调整数组的大小是必要的,或者在开始时指定大小。