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 获取一个值,指示数组是否具有固定大小。 |
2 | IsReadOnly 获取一个值,该值指示Array是否为只读。 |
3 | Length 获取一个32位整数,表示数组所有维度中元素的总数。 |
4 | LongLength 获取一个64位整数,表示数组所有维度中元素的总数。 |
5 | Rank 获取数组的排名(维数)。 |
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) 复制一定范围内由数组以第一个元素的元素,并将它们粘贴到起始于第一个元素另一个数组。长度被指定为32位整数。 |
3 | Public Sub CopyTo (array As Array, index As Integer) 将当前的一维数组到指定的一维数组从指定的目标数组索引处的所有元素。索引被指定为32位整数。 |
4 | Public Function GetLength (dimension As Integer) As Integer 获取一个32位整数,它表示数组的指定维中的元素的数量。 |
5 | Public Function GetLongLength (dimension As Integer) As Long 获取一个64位整数,它代表了数组的指定维中的元素的数量。 |
6 | Public Function GetLowerBound (dimension As Integer) As Integer 获取下界在数组中指定的尺寸。 |
7 | Public Function GetType As 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) 使用排序了IComparable实现阵列中的每个元素在整个一维数组中的元素。 |
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
更多建议: