VB.Net - 陣列



陣列儲存固定大小的相同型別元素的順序集合。陣列用於儲存資料集合,但通常將其視為相同型別變數的集合更有用。

所有陣列都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。

Arrays in 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 允許使用多維陣列。多維陣列也稱為矩形陣列。

您可以將一個二維字串陣列宣告為 -

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

交錯陣列

交錯陣列是陣列的陣列。以下程式碼顯示了宣告一個名為 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 類的屬性

下表提供了一些最常用的 **Array** 類的 **屬性** -

序號 屬性名稱和描述
1

IsFixedSize

獲取一個值,該值指示 Array 是否具有固定大小。

2

IsReadOnly

獲取一個值,該值指示 Array 是否為只讀。

3

Length

獲取一個 32 位整數,表示 Array 所有維度中元素的總數。

4

LongLength

獲取一個 64 位整數,表示 Array 所有維度中元素的總數。

5

Rank

獲取 Array 的秩(維度數)。

Array 類的方法

下表提供了一些最常用的 **Array** 類的 **方法** -

序號 方法名稱和描述
1

Public Shared Sub Clear (array As Array, index As Integer, length As Integer)

將 Array 中的一系列元素設定為零、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)

將當前一維 Array 的所有元素複製到指定的一維 Array 中,從指定的 Array 目標索引開始。索引指定為 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

獲取 Array 中指定維度的下界。

7

Public Function GetType As Type

獲取當前例項的 Type(繼承自 Object)。

8

Public Function GetUpperBound (dimension As Integer) As Integer

獲取 Array 中指定維度的上界。

9

Public Function GetValue (index As Integer) As Object

獲取一維 Array 中指定位置的值。索引指定為 32 位整數。

10

Public Shared Function IndexOf (array As Array,value As Object) As Integer

搜尋指定的 object 並返回其在整個一維 Array 中第一次出現時的索引。

11

Public Shared Sub Reverse (array As Array)

反轉整個一維 Array 中元素的順序。

12

Public Sub SetValue (value As Object, index As Integer)

將值設定為一維 Array 中指定位置的元素。索引指定為 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
廣告