数组( Arrays)
数组存储相同类型的固定大小的顺序元素集合。 数组用于存储数据集合,但将数组视为相同类型的变量集合通常更有用。
所有阵列都包含连续的内存位置。 最低地址对应于第一个元素,最高地址对应于最后一个元素。
在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)
Where,
当您调整大小时, 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
锯齿状阵列
Jagged数组是一个数组数组。 以下代码显示了一个名为scores 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类是VB.Net中所有数组的基类。 它在System命名空间中定义。 Array类提供了各种用于处理数组的属性和方法。
数组类的属性
下表提供了Array类的一些最常用的properties -
Sr.No | 物业名称和描述 |
---|---|
1 | IsFixedSize 获取一个值,该值指示Array是否具有固定大小。 |
2 | IsReadOnly 获取一个值,该值指示Array是否为只读。 |
3 | Length 获取一个32位整数,表示Array的所有维度中的元素总数。 |
4 | LongLength 获取一个64位整数,表示Array的所有维度中的元素总数。 |
5 | Rank 获取Array的等级(维数)。 |
数组类的方法
下表提供了Array类中一些最常用的methods -
Sr.No | 方法名称和描述 |
---|---|
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 搜索指定的对象并返回整个一维Array中第一个匹配项的索引。 |
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文档。
例子 (Example)
以下程序演示了使用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