2012-06-21 55 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等)因此,每次你想添加一個新的項目時手動調整數組的大小是必要的,或者在開始時指定大小。