VB.Net - 数组


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

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

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是要重新维度的数组的名称。

  • 下标指定新的维度。

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

锯齿状阵列

交错数组是数组的数组。以下代码显示了声明一个名为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 中所有数组的基类。它在系统命名空间中定义。Array 类提供了各种处理数组的属性和方法。

数组类的属性

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

先生编号 物业名称及描述
1

大小固定

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

2

为只读

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

3

长度

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

4

长长度

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

5

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

数组类的方法

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

先生编号 方法名称和描述
1

Public Shared Sub Clear(数组为数组,索引为整数,长度为整数)

将 Array 中的一系列元素设置为零、 false 或 null,具体取决于元素类型。

2

公共共享子副本(sourceArray 作为数组,destinationArray 作为数组,长度作为整数)

从数组中从第一个元素开始复制一系列元素,并将它们粘贴到从第一个元素开始的另一个数组中。长度指定为 32 位整数。

3

Public Sub CopyTo(数组作为数组,索引作为整数)

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

4

公共函数 GetLength(维度为整数)As Integer

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

5

公共函数 GetLongLength(维度为整数)As Long

获取一个 64 位整数,表示 Array 指定维度中的元素数量。

6

公共函数 GetLowerBound (维度为整数) As Integer

获取数组中指定维度的下界。

7

公共函数 GetType 作为类型

获取当前实例的Type(继承自Object)。

8

公共函数 GetUpperBound (维度为整数) As Integer

获取 Array 中指定维度的上限。

9

公共函数 GetValue(索引为整数)作为对象

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

10

公共共享函数 IndexOf(数组作为数组,值作为对象)作为整数

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

11

公共共享子逆向(数组作为数组)

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

12

Public Sub SetValue(值作为对象,索引作为整数)

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

13

公共共享子排序(数组作为数组)

使用数组每个元素的 IComparable 实现对整个一维数组中的元素进行排序。

14

公共可重写函数 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