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允许多维数组,多维数组也被称为矩形数组。可以声明一个2维的字符串数组:

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 的锯齿状数组:

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

数组类的属性

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

编号 属性 描述
1 IsFixedSize 获取一个值,指示Array是否具有固定大小。
2 IsReadOnly 获取一个值,指示数组是否是只读。
3 Length 获取一个32位整数,表示数组所有维度中的元素总数。
4 LongLength 获取一个64位整数,它表示数组中所有维的元素总数。
5 Rank 获取数组的等级(维数)。

Array类的方法

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

编号 方法 描述
1 Public Shared Sub Clear (array As Array, index As Integer, length As Integer) 根据元素类型,将数组中的元素范围设置为零,为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) 将当前一维数组的所有元素复制到指定的一维数组,从指定的目标数组索引开始。该索引被指定为一个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 获取数组中指定维度的下限。
7 Public Function GetType As Type 获取当前实例的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) 使用Array的每个元素的IComparable实现对整个一维Array中的元素进行排序。
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

猿狮妹
2023-03-16
VB Net 数组 在线教程
热门教程
1 VB.Net教程 VB.Net是Microsoft开发的一种简单的,现代的,面向对象的计算机编程语言,它将.NET Framework和公共语言运行时的强大功能与Visual Basic的优势相结合。本教程将介绍和讲解基本的VB.Net编程,并讲解各种有关VB.Net编程语言的基础、高级概念。
2 VB.Net Excel工作表 VB.Net支持Microsoft Excel 2010的COM对象模型和应用程序之间的互操作性。 要应用程序中使用这种互操作性,需要在Windows窗体应用程序中导入名称空间Microsoft
3 VB.Net程序结构 在学习VB.Net编程语言的基本构建块之前,先来看看一个最基本的VB.Net程序结构,以便可以在以后的章节中作为参考来理解程序代码块。 VB.Net Hello World示
4 VB.Net开发环境安装配置 在本章中,我们将讨论和学习可用于创建VB.Net应用程序的工具。 我们已经提到,VB.Net是.Net框架的一部分,用于编写.Net应用程序。 因此,在讨论用于运
5 VB.Net子程序(Sub) 在前面的章节中提到:子程序是不返回任何值的程序。到目前为止,在前面所有的例子中一直使用子过程Main。 在这些教程中,我们一直在编写控制台应
6 VB.Net第一个程序(Helloworld) 为了演示如何使用VS 2017创建一个简单的VB.net应用程序,这里将使用VS 2017来创建一个简单的“Hello,World”的控制台应用应用程序。这个例子将使用VB.NET
7 VB.Net数据类型 数据类型是指用于声明不同类型的变量或函数的扩展系统。变量的类型决定了它在存储器中占用多少空间以及如何解释存储的位模式。 VB.Net数据类型VB.
8 VB.Net类和对象 当定义一个类时,就定义了一个数据类型的蓝图(或模板)。这实际上并没有定义任何数据,但它确实定义了类名和含义,即该类的一个对象将包含哪些内
9 VB.Net正则表达式 正则表达式是可以与输入文本进行匹配的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符文字,运算符或构造组成。 用
10 VB.Net基本控件 对象是通过使用工具箱控件在Visual Basic 窗体上创建的一种用户界面元素。 实际上,在Visual Basic中,窗体(Form)本身就是一个对象。 每个Visual Basic 控件都
  • Copyright © 2021 猿狮院, All rights reserved.