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关键字有助于在调整现有数组大小时保留现有数组中的数据。

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属性名称和说明
1IsFixedSize Gets a value indicating whether the Array has a fixed size.获取一个值,指示数组是否具有固定大小。
2IsReadOnly Gets a value indicating whether the Array is read-only.获取一个值,该值指示Array是否为只读。
3Length Gets a 32-bit integer that represents the total number of elements in all the dimensions of the Array.获取一个32位整数,表示数组所有维度中元素的总数。
4LongLength Gets a 64-bit integer that represents the total number of elements in all the dimensions of the Array.获取一个64位整数,表示数组所有维度中元素的总数。
5Rank Gets the rank (number of dimensions) of the Array.获取数组的排名(维数)。

Array类的方法

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

SN方法名称和说明
1Public Shared Sub Clear (array As Array, index As Integer, length As Integer)公共共享子清除(数组为数组,指数为整数,长度为整数) 设置一个范围的数组元素的零,为false,或为空,这取决于元素类型。
2Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)公共共享子复制(sourceArray作为数组,destinationArray作为数组,长度为整数) 复制一定范围内由数组以第一个元素的元素,并将它们粘贴到起始于第一个元素另一个数组。长度被指定为32位整数。
3Public Sub CopyTo (array As Array, index As Integer)公共Sub CopyTo(数组为数组,指数为整数) 将当前的一维数组到指定的一维数组从指定的目标数组索引处的所有元素。索引被指定为32位整数。
4Public Function GetLength (dimension As Integer) As Integer公共功能对GetLength(尺寸为整数)作为整数 获取一个32位整数,它表示数组的指定维中的元素的数量。
5Public Function GetLongLength (dimension As Integer) As Long公共职能GetLongLength(尺寸为整数),只要 获取一个64位整数,它代表了数组的指定维中的元素的数量。
6Public Function GetLowerBound (dimension As Integer) As Integer公共职能GetLowerBound(尺寸为整数)作为整数 获取下界在数组中指定的尺寸。
7Public Function GetType As Type公共职能的GetType为类型 获取当前实例的类型(从Object继承)。
8Public Function GetUpperBound (dimension As Integer) As Integer公共职能GetUpperBound(尺寸为整数)作为整数 获取上限在数组中指定的尺寸。
9Public Function GetValue (index As Integer) As Object公共职能的GetValue(指数为整数)作为对象 获取在一维数组中指定位置的值。索引被指定为32位整数。
10Public Shared Function IndexOf (array As Array,value As Object) As Integer公共共享功能的IndexOf(数组作为数组,值作为对象)作为整数 搜索指定的对象,并返回第一次出现的整个一维数组中的索引。
11Public Shared Sub Reverse (array As Array)公共共享子反向(阵列阵列) 反转在整个一维数组中的元素的顺序。
12Public Sub SetValue (value As Object, index As Integer)公用Sub的SetValue(价值为对象,指数为整数) 在一维阵列中的指定位置设置一个值的元素。索引被指定为32位整数。
13Public Shared Sub Sort (array As Array)公共共享子排序(数组为数组) 使用排序了IComparable实现阵列中的每个元素在整个一维数组中的元素。
14Public 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