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
广告