-

数组存储相同类型的元素的固定大小顺序集合。 数组用于存储数据集合,但将数组视为同一类型的变量的集合通常更有用。

所有数组由连续的内存位置组成。 最低地址对应于第一个元素,最高地址对应于最后一个元素。


在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


或者,整数变量的3维数组:

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数组是一个数组的数组。 以下代码显示了声明一个名为score of Integers的不规则数组:

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中所有数组的基类。 它在系统命名空间中定义。 Array类提供了处理数组的各种属性和方法。


Array类的属性

下表提供了一些Array类中最常用的属性

SN属性名称和说明
1

IsFixedSize

Gets a value indicating whether the Array has a fixed size.

获取一个值,指示数组是否具有固定大小。

2

IsReadOnly

Gets a value indicating whether the Array is read-only.

获取一个值,该值指示Array是否为只读。

3

Length

Gets a 32-bit integer that represents the total number of elements in all the dimensions of the Array.

获取一个32位整数,表示数组所有维度中元素的总数。

4

LongLength

Gets a 64-bit integer that represents the total number of elements in all the dimensions of the Array.

获取一个64位整数,表示数组所有维度中元素的总数。

5

Rank

Gets the rank (number of dimensions) of the Array.

获取数组的排名(维数)。


Array类的方法

下表提供了一些最常用的Array类方法:

SN方法名称和说明
1

Public Shared Sub Clear (array As Array, index As Integer, length As Integer)
公共共享子清除(数组为数组,指数为整数,长度为整数)

设置一个范围的数组元素的零,为false,或为空,这取决于元素类型。

2

Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)
公共共享子复制(sourceArray作为数组,destinationArray作为数组,长度为整数)

复制一定范围内由数组以第一个元素的元素,并将它们粘贴到起始于第一个元素另一个数组。长度被指定为32位整数。

3

Public Sub CopyTo (array As Array, index As Integer)
公共Sub CopyTo(数组为数组,指数为整数)

将当前的一维数组到指定的一维数组从指定的目标数组索引处的所有元素。索引被指定为32位整数。

4

Public Function GetLength (dimension As Integer) As Integer
公共功能对GetLength(尺寸为整数)作为整数

获取一个32位整数,它表示数组的指定维中的元素的数量。

5

Public Function GetLongLength (dimension As Integer) As Long
公共职能GetLongLength(尺寸为整数),只要

获取一个64位整数,它代表了数组的指定维中的元素的数量。

6

Public Function GetLowerBound (dimension As Integer) As Integer
公共职能GetLowerBound(尺寸为整数)作为整数

获取下界在数组中指定的尺寸。

7

Public Function GetType As Type
公共职能的GetType为类型

获取当前实例的类型(从Object继承)。

8

Public Function GetUpperBound (dimension As Integer) As Integer
公共职能GetUpperBound(尺寸为整数)作为整数

获取上限在数组中指定的尺寸。

9

Public Function GetValue (index As Integer) As Object
公共职能的GetValue(指数为整数)作为对象

获取在一维数组中指定位置的值。索引被指定为32位整数。

10

Public Shared Function IndexOf (array As Array,value As Object) As Integer
公共共享功能的IndexOf(数组作为数组,值作为对象)作为整数

搜索指定的对象,并返回第一次出现的整个一维数组中的索引。

11

Public Shared Sub Reverse (array As Array)
公共共享子反向(阵列阵列)

反转在整个一维数组中的元素的顺序。

12

Public Sub SetValue (value As Object, index As Integer)
公用Sub的SetValue(价值为对象,指数为整数)

在一维阵列中的指定位置设置一个值的元素。索引被指定为32位整数。

13

Public Shared Sub Sort (array As Array)
公共共享子排序(数组为数组)

使用排序了IComparable实现阵列中的每个元素在整个一维数组中的元素。

14

Public Overridable Function ToString As String
公众可重写的ToString函数作为字符串

返回表示当前对象(从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