我们都知道在全部程序设计语言中数组都是一个非常重要的概念,数组的作用是同意程序猿用同一个名称来引用多个变量,因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环,这样就能够高效地处理复杂的情况,因此在非常多情况下,使用数组能够缩短或者简化程序的代码。本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。

数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,其余的元素连续地分布在上下界之间,而且数组在内存中也是用连续的区域来存储的,所以要求声明数组每维的长度不能超过Long数据类型的最大值,即264—1=263。

我们把VB.NET数组当作一个对象来处理,这就意味着数组类型是单个引用类型,数组变量包括指向构成数组元素、数组维和数组长度等数据的指针,数组之间互相赋值事实上仅仅是在相互复制指针,并且数组继承了System名字空间的Array类。

VB.NET中提供的数组类型和VB 6.0中有一些区别,我们将在以下做具体的解说。

(1)VB.NET数组的声明

VB.NET中的数组有两种类型:定长数组和动态数组。这里先介绍定长数组的几种不同的声明方式,不同的声明方法将导致数组不同的有效范围。

◆Dim语句在模块段建立模块级数组,比如:

  1. Dim arrayl(3)As Integer

◆Public语句在模块的声明部分建立一个公共数组,比如:

  1. Public counttype(20)as string

◆Static语句声明一个过程内的局部数组,比如:

  1. Public Sub Ipaddress()
  2. Static server(30)as string
  3. End Sub

VB.NET还提供了新的数组初始化语法,仅仅须要简单的语句就能够完毕数组的声明和初始化,比如:

  1. New array initialization syntax
  2. Dim arrayl As Integer()={2,4,8}

在VB.NET中,为了和其它语言更加易于协同操作,数组的下标均设定为0,不同意声明一个下界为1的数组,因此Option Base语句不再被VB.NET支持,并且在声明一个数组时必须用它的元素个数,而不是它的上界来初始化,比如:

  1. //声明一个一维数组具有3个元素,下标从0~2
  2. Dim arrayl(3)As Integer
  3. arrayl(0):2
  4. arrayl(1)=4
  5. arrayl(2)=8

以上声明的数组有三个元素,下标从0到2,假设代码企图訪问下标为3的数组元素,将引起执行错误。

(2)二维数组及多维数组

除了较为简单的一维数组外,VB.NET还支持多维数组,其声明方法和一维数组没有太大的差别,比如:

  1. StatiC multidim(10,10)as double
  2. Public Singledim(5,8,10,3)as single

以上语句声明了一个lO行,10列的二维数组。在VB.NET中,数组最多有32维,并且每一维的长度都不可以超过Long数组类型的最大值。数组总尺寸的限制是不一样的,这与所採用的操作系统以及计算机中使用的内存量有关。数组的维数将保留在System.Array.Rank属性中,每维的长度可以由System.Array.GetLengfll方法来得到。须要提醒注意的是,因为VB.NET中数组是以0为基的,假设返回来的值为9,则表示数组是10维的。当为数组继续加入维数的时候,使其扩展为多位数组,此时会使数组所需的存储空间大幅度添加,所以在使用多维数组时对这个方面也要多加考虑。

另外VB.NET还提供了Lbound()和Lbound()两个函数来返回数组的上、下界。中国自学编程网整理公布 ,www.zxbc.cn对于一维数组而言,仅仅须要一个參数,那便是数组名。比如:

  1. one==Ubound(arrayl)

对于多位数组,也仅仅是简单地将逗号后面的第二个參数指定为数组的第几维。比如:

  1. tw0=Lbound(multidim,7)

假设没有指明是哪一维,系统默觉得第一维。

(3)动态数组

有时在程序执行之前无法确认数组的大小,VB.NET提供了在程序执行时动态决定数组大小的功能,即动态数组。它具有灵活多变的特点,能够在不论什么时候依据须要随时改变数组的大小,有助于内存的管理。建立一个动态数组的具体过程例如以下:

①和声明一般数组一样,能够使用前面介绍的几种声明,仅仅是赋一个空维数组,这样就将数组声明为动态数组。典型的声明语句为:

  1. Dim types(  )  As integer

②然后使用ReDim语句来配置数组大小。ReDim语句声明仅仅能在过程其中使用,它是可运行语句,能够改变数组中元素的个数,可是却不能够改变数组的维数,就是说不能把一维变为二维。在ReDim语句配置数组元素个数时,数组中的内容将所有置为0。典型语句为:

  1. ReDim Types(X+1)

③假设想改变数组大小又不想丢失原来的数据,仅仅要在ReDim语句中包括Preservekeyword就能够,典型语句为:

  1. ReDa_m PresetVe Types(10,23)

对于多维数组,在使用Preservekeyword时,仅仅能改动最后一维的大小。假设改变其它维,那么将出现执行错误。假设不清楚某维的当前大小,能够使用GetI~ength函数来获取。

(4)VB.NET数组的使用

在’VB 6.0中,能够用For Each来循环遍历一个数组。比如:

  1. Dim x As Integer
  2. F0r Each x In arrayl
  3. Console.WriteLine(x)
  4. Next

在VB.NET中能够使用For循环和数组长度来遍历一个数组。比如:

  1. Dim i As工nteger
  2. F0r i=0 T0  (arrayl.Length-1)
  3. Console.WriteLine(arrayl(1)J
  4. Next i

在使用数组时还要注意,不仅声明语法有变化,并且在执行时处理方式也有了非常大的变化。VB.NET在堆栈中给数组分配地址空间,当向一个方法传递数组类型的參数时,使用的是引用传递而不是值传递。以下是互相传递数组引用的三个方法:

  1. Dim arrayl(3,3)AS Integer
  2. Dim array2 As Integer(,)
  3. Redim array2(3,3)
  4. Dim array3 As Integer(,)={{2,4},{12,29}}

方法一在两个方向同一时候传递了数组引用,一般用来向调用者返回数组引用。方法二和方法三从调用者向方法的实现中传递了数组引用。方法二的參数被声明为一维数组,而在方法三中參数被声明成了-维数组。

(5)数组的高级特性

①数组的数组

在O~ect数组中还能够组装不同类型的数组。比如,下面代码中先建立两个数组,一个是Integer类型,还有一个是String类型,然后再声明一个O~ect类型的数组,把前两个数组分装在当中。

  1. Dim I as integer
  2. //声明一个integer类型的数组
  3. Dim grade(15)as integer
  4. For i:0 tO 14
  5. Grade(i)=i
  6. NeXt i
  7. //声明一个string类型的数组
  8. Dim name(15)as String
  9. For i=0 tO 14
  10. Name(i):”Student”&cstr(i)
  11. Next i
  12. //声明一个新的数组为object,用来组装其它数组
  13. Dim Student(2)as object
  14. Student(0)=grade
  15. Student(1)=name
  16. Msgbox(student(0)(2))  //显示”2”
  17. Msgbox(student(1)(3))  //显示”student 3”。

上述代码中使用了student(0)和student(1)的后绑定。注意,仅仅有在Option s~ict被关闭时,VB.NET编译器才同意使用后绑定。

②数组和集合

尽管集合通经常使用于操作对象,可是它也能操作数据类型。在某些条件下,其效率比数组还要高。我们能够通过下面4个方面来进行比較。

◆集合能够依据须要进行扩充,不像数组那样需预先规定大小。

◆数组仅仅能保存声明时所定义的数据类型,可是同一个集合中能够存储不同类型的数据。

◆集合元素的改动较为麻烦,不像数组那么方便。

◆处理集合的速度较数组慢,可是在处理较小的动态条目集,使用集合是最为理想的选择。

VB.NET 数组的定义 动态使用 多维数组相关推荐

  1. c语言动态生成二维数组,C语言 动态创建二维数组

    /*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include #include #include #define RANK 10 #define COLUMN ...

  2. C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)

    1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...

  3. php 动态多维数组长度,php – 动态创建多维数组

    我正在尝试生成一个多维数组,其深度等于正则表达式中找到的匹配数.数组键是每个匹配的字符串值. 例如: preg_match('/([A-Z])\-?([0-9])\-?([0-9]{1,3})/i', ...

  4. Python 动态生成多维数组

    参考:http://blog.csdn.net/theonegis/article/details/50775076 多维数组其实就是多个一维数组的嵌套,Python中有原生的list,类似一个动态数 ...

  5. c语言定义可变大小二维数组,C中使用动态二维数组

    a[j] = dataStart + j * rowSize; return a; } 参数w,h是所申请二维数组的列数和行数,size是数组单元的字节数.比如,申请一个4*5的int型的二维数组,使 ...

  6. C++ 动态创建二维数组

    背景知识: 对二维数组的理解方式至关重要:把二维数组看成是一种特殊的一维数组,它的元素又是一个一维数组. 例如:int a[3][4], 可以理解为定义了3个一维数组,即相当于  a[0], a[1] ...

  7. Java基础动态初始化二维数组

    直接上代码: //动态初始化二维数组 public class ArrayTest09 {public static void main(String[] args) {//定义一个二维数组并动态初始 ...

  8. pycharm定义空的二维数组_Excel VAB入门(二)数组和字典

    数组和字典也是VBA的常用到数据类型之一.但是我翻了有四五本VBA教程相关的书,里面都没有介绍到字典,数组到是在介绍数据类型时有介绍,而并没有提到字典. 事实上,字典不是VBA内置的类型,它是Wind ...

  9. 动态开辟二维数组的两种方案及位体

    动态开辟二维数组的两种方案及位体 一.在静态二维数组中查询数据 二.动态开辟二维数组空间 1.用二级指针的方式开辟 2.用结构体的方式开辟 三.位体 先来回顾一下动态开辟一位数组的方法: #inclu ...

最新文章

  1. 科研|Science回应中国燃料电池研究“造假”:发函重点关注,之前撤稿率100%
  2. Android SDK content Loader has encountered a problem.parseSdkContent failed
  3. 【Linux】39.nslookup查看域名与其对应的ip
  4. Java怎么在if输出中进行运算_磕代码:c/c++/java:输入三个整数,输出运算结果;if条件句的使...
  5. JS中的数据类型转换:String转换成Number的3种方法
  6. ②你真的学会Java了吗?来自《卷Ⅰ》的灵魂提问
  7. 充分使用表格标签(Table)
  8. Windows button控件(按钮控件)
  9. hi35xx stmmac网卡驱动源码解读
  10. android开发案例1---拦截电话,拯救史迪仔,有序广播
  11. ROG GL552VW BIOS 编程器官方固件
  12. js使用双层for循环实现倒三角形、正三角形
  13. 什么是 EventLoop ?
  14. 定点数一位乘法之Booth(布斯)算法
  15. 分享几个实用,装逼的cmd命令。
  16. 利用人性弱点的互联网产品(三)虚荣
  17. 数据堂CEO齐红威应邀出席“数据要素市场制度体系建设”专家研讨会
  18. GD32 SPI DMA收发
  19. 永久免费的远程桌面软件
  20. Well-known DEP-violating thunks

热门文章

  1. cloudera之hadoop-0.20.1+152.tar.gz 安装出现找不到JAVA_HOME问题的解决办法
  2. 职场笔记[0702]:用户体验和创业
  3. 简单的路由协议分析和配置
  4. html5移动站点是什么,浅谈移动站点优化之痛-HTML5 什么是html5?
  5. 万门69节入门python_Python入门六:字符串
  6. python中常见的数据类型_Python中常见的数据类型总结(四)
  7. Ubuntu 20.04上安装Git方法
  8. Linux磁盘挂载和docker安装
  9. 14春计算机基础作业2,北语14春《计算机基础》作业2 答案.docx
  10. JavaScript初学者编程题(7)