VB.Net數組
數組存儲相同類型的元素的固定大小的順序集合。數組用於存儲數據集合,但將數組視爲相同類型的變量集合通常更有用。
所有數組都由連續的內存位置組成。最低地址對應於第一個元素,最高地址對應最後一個元素。如下圖示 -
在VB.Net中創建數組
要在VB.Net中聲明一個數組,可以使用Dim
語句。 例如,
Dim intData(30) ' an array of 31 elements'
Dim strData(20) As String ' an array of 21 strings'
Dim twoDarray(10, 20) As Integer 'a two dimensional array of integers'
Dim ranges(10, 100) 'a two dimensional array'
也可以在聲明數組的同時初始化數組元素。 例如,
Dim intData() As Integer = {12, 16, 20, 24, 28, 32}
Dim names() As String = {"Karthik", "Sandhya", "Shivangi", "Ashwitha", "Somnath"}
Dim miscData() As Object = {"Hello World", 12d, 16ui, "A"c}
可以使用數組的索引來存儲和訪問數組中的元素。以下程序演示了這一點:
Module arrayApl
Sub Main()
Dim n(10) As Integer ' n is an array of 11 integers '
Dim i, j As Integer
' initialize elements of array n '
For i = 0 To 10
n(i) = i + 100 ' set element at location i to i + 100 '
Next i
' output each array element's value '
For j = 0 To 10
Console.WriteLine("Element({0}) = {1}", j, n(j))
Next j
Console.ReadKey()
End Sub
End Module
當上面的代碼被編譯並執行時,會產生以下結果:
Element(0) = 100
Element(1) = 101
Element(2) = 102
Element(3) = 103
Element(4) = 104
Element(5) = 105
Element(6) = 106
Element(7) = 107
Element(8) = 108
Element(9) = 109
Element(10) = 110
動態數組
動態數組是可以按照程序的需要進行標註和重新定義的數組。可以使用ReDim
語句聲明動態數組。
ReDim
語句的語法:
ReDim [Preserve] arrayname(subscripts)
其中,
- Preserve關鍵字有助於在調整大小時保留現有數組中的數據。
- arrayname是要重新維度的數組的名稱。
- subscripts指定新的維度。
Module arrayApl
Sub Main()
Dim marks() As Integer
ReDim marks(2)
marks(0) = 85
marks(1) = 75
marks(2) = 90
ReDim Preserve marks(10)
marks(3) = 80
marks(4) = 76
marks(5) = 92
marks(6) = 99
marks(7) = 79
marks(8) = 75
For i = 0 To 10
Console.WriteLine(i & vbTab & marks(i))
Next i
Console.ReadKey()
End Sub
End Module
當上面的代碼被編譯並執行時,會產生以下結果:
0 85
1 75
2 90
3 80
4 76
5 92
6 99
7 79
8 75
9 0
10 0
多維數組
VB.Net允許多維數組,多維數組也被稱爲矩形數組。可以聲明一個2
維的字符串數組:
Dim twoDStringArray(10, 20) As String
或者是一個整數變量的三維數組:
Dim threeDIntArray(10, 10, 10) As Integer
以下程序演示瞭如何創建和使用二維數組:
Module arrayApl
Sub Main()
' an array with 5 rows and 2 columns
Dim a(,) As Integer = {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}}
Dim i, j As Integer
' output each array element's value '
For i = 0 To 4
For j = 0 To 1
Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i, j))
Next j
Next i
Console.ReadKey()
End Sub
End Module
當上面的代碼被編譯並執行時,會產生以下結果:
a[0,0]: 0
a[0,1]: 0
a[1,0]: 1
a[1,1]: 2
a[2,0]: 2
a[2,1]: 4
a[3,0]: 3
a[3,1]: 6
a[4,0]: 4
a[4,1]: 8
鋸齒狀的數組
鋸齒狀(Jagged)數組是數組的數組。下面的代碼顯示了聲明一個名爲 scores 的鋸齒狀數組:
Dim scores As Integer()() = New Integer(5)(){}
以下示例說明如何使用鋸齒狀數組:
Module arrayApl
Sub Main()
'a jagged array of 5 array of integers '
Dim a As Integer()() = New Integer(4)() {}
a(0) = New Integer() {0, 0}
a(1) = New Integer() {1, 2}
a(2) = New Integer() {2, 4}
a(3) = New Integer() {3, 6}
a(4) = New Integer() {4, 8}
Dim i, j As Integer
' output each array element's value '
For i = 0 To 4
For j = 0 To 1
Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i)(j))
Next j
Next i
Console.ReadKey()
End Sub
End Module
執行上面示例代碼,得到以下結果 -
a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8
Array類
Array
類是VB.Net中所有數組的基類。它在System
命名空間中定義。Array
類提供了各種屬性和方法來處理數組。
數組類的屬性
下表提供了Array
類的一些最常用的屬性:
編號
屬性
描述
1
IsFixedSize
獲取一個值,指示Array
是否具有固定大小。
2
IsReadOnly
獲取一個值,指示數組是否是隻讀。
3
Length
獲取一個32
位整數,表示數組所有維度中的元素總數。
4
LongLength
獲取一個64
位整數,它表示數組中所有維的元素總數。
5
Rank
獲取數組的等級(維數)。
Array類的方法
下表提供了一些最常用的Array
類的方法:
編號
方法
描述
1
Public Shared Sub Clear (array As Array, index As Integer, length As Integer)
根據元素類型,將數組中的元素範圍設置爲零,爲false
或爲null
。
2
Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)
從第一個元素開始,從Array
中複製一系列元素,並將它們粘貼到第一個元素開始的另一個Array
中。長度被指定爲32
位整數。
3
Public Sub CopyTo (array As Array, index As Integer)
將當前一維數組的所有元素複製到指定的一維數組,從指定的目標數組索引開始。該索引被指定爲一個32
位整數。
4
Public Function GetLength (dimension As Integer) As Integer
獲取一個32
位整數,該整數表示Array
的指定維度中的元素數。
5
Public Function GetLongLength (dimension As Integer) As Long
獲取一個64
位整數,它表示Array
的指定維度中的元素數。
6
Public Function GetLowerBound (dimension As Integer) As Integer
獲取數組中指定維度的下限。
7
Public Function GetType As Type
獲取當前實例的Type(從Object
繼承)。
8
Public Function GetUpperBound (dimension As Integer) As Integer
獲取數組中指定維的上界。
9
Public Function GetValue (index As Integer) As Object
獲取一維數組中指定位置的值。該索引被指定爲一個32
位整數。
10
Public Shared Function IndexOf (array As Array,value As Object) As Integer
搜索指定的對象並返回整個一維數組中第一個匹配項的索引。
11
Public Shared Sub Reverse (array As Array)
顛倒整個一維數組中元素的順序。
12
Public Sub SetValue (value As Object, index As Integer)
將值設置爲一維數組中指定位置的元素。索引被指定爲一個32
位整數。
13
Public Shared Sub Sort (array As Array)
使用Array
的每個元素的IComparable
實現對整個一維Array中的元素進行排序。
14
Public Overridable Function ToString As String
返回表示當前對象的字符串(從Object繼承)。
有關Array
類屬性和方法的完整列表,請參閱Microsoft文檔。
示例
以下程序演示如何使用Array
類的一些方法:
Module arrayApl
Sub Main()
Dim list As Integer() = {34, 72, 13, 44, 25, 30, 10}
Dim temp As Integer() = list
Dim i As Integer
Console.Write("Original Array: ")
For Each i In list
Console.Write("{0} ", i)
Next i
Console.WriteLine()
' reverse the array'
Array.Reverse(temp)
Console.Write("Reversed Array: ")
For Each i In temp
Console.Write("{0} ", i)
Next i
Console.WriteLine()
'sort the array'
Array.Sort(list)
Console.Write("Sorted Array: ")
For Each i In list
Console.Write("{0} ", i)
Next i
Console.WriteLine()
Console.ReadKey()
End Sub
End Module
當上面的代碼被編譯並執行時,會產生以下結果:
Original Array: 34 72 13 44 25 30 10
Reversed Array: 10 30 25 44 13 72 34
Sorted Array: 10 13 25 30 34 44 72