VB.Net數組

數組存儲相同類型的元素的固定大小的順序集合。數組用於存儲數據集合,但將數組視爲相同類型的變量集合通常更有用。

所有數組都由連續的內存位置組成。最低地址對應於第一個元素,最高地址對應最後一個元素。如下圖示 -

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