VB.NET 数组的定义 动态使用 多维数组

VB.NET 数组的定义 动态使用 多维数组

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

 

我们都知道在全部程序设计语言中数组都是一个非常重要的概念,数组的作用是同意程序猿用同一个名称来引用多个变量,因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环,这样就能够高效地处理复杂的情况,因此在非常多情况下,使用数组能够缩短或者简化程序的代码。本文主要介绍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.  
  4.    Console.WriteLine(arrayl(1)J  
  5.    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个方面来进行比較。

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118288.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月8日 上午10:00
下一篇 2021年12月8日 上午10:00


相关推荐

  • c语言中instr函数,InStr 函数

    c语言中instr函数,InStr 函数示例在表达式中使用 InStr 函数可以在任何可以使用表达式的地方使用 InStr 例如 如果要查找第一个周期 IP 地址的字段中 名为 IPAddress 可以使用 InStr 找到它 如下所示 InStr 1 IPAddress InStr 函数检查 IPAddress 字段中的每个值 并返回第一个周期的位置 因此 如果 IP 地址的第一部分为 10 该函

    2026年3月20日
    2
  • unity3d自学教程_3D技巧

    unity3d自学教程_3D技巧0.目录简要介绍基本概念视图菜单坐标系统资源元素脚本交互相机操作 1.简要介绍Unity3D软件是由UnityTechnologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。Unity3D

    2022年8月10日
    14
  • 最新xampp安装教程与配置

    最新xampp安装教程与配置XAMPP 安装并部署 XAMPP 这个集成软件包之前并没有了解过 为了完成软件质量保证与测试的实验在此踩坑 需要实验报告的朋友们能免费下载 缺陷管理工具 Mantis 安装及使用鉴于我们还不知道 XAMPP 是干什么的我们简单了解一下 了解 XAMPP XAMPP Apache MySQL PHP PERL 是一个功能强大的建站集成软件包 这个软件包原来的名字是 LAMPP 但是为了避免误解 最新的几个版本就改名为 XAMPP 了 它可以在 Windows Linux Solaris MacOSX 等多种操作系

    2026年3月20日
    2
  • Servlet-JSP入门

    Servlet-JSP入门JSP作用:主要作用是代替Servlet程序回传html页面的数据。因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都很高。一般的Servlet回传页面如下protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType(“text/html;charset=U

    2022年8月8日
    9
  • android 平板键盘布局,android 4.1 平板连接USB键盘,默认键盘布局

    android 平板键盘布局,android 4.1 平板连接USB键盘,默认键盘布局由于工作关系 客户出外单 经常提到 连接 USB 键盘 默认键盘布局为法语 西班牙语 跟踪了下代码 终于搞定 frameworks base packages InputDevices res xml keyboard layouts xml 此文件定义了所支持的语言键盘布局修改路径 frameworks base packages SystemUI AndroidManif xmlInput

    2026年3月17日
    2
  • java类加载和初始化_java静态变量什么时候初始化

    java类加载和初始化_java静态变量什么时候初始化????Java学习路线配套文章:Java学习路线总结,搬砖工逆袭Java架构师(全网最强)????基础推荐:Java基础教程系列????实战推荐:SpringBoot基础教程????简介:Java领域优质创作者????、CSDN哪吒公众号作者✌、Java架构师奋斗者????????扫描主页左侧二维码,加入群聊,一起学习、一起进步????欢迎点赞????收藏⭐留言????目录一、类的加载与ClassLoader的理解1、加载2、链接3、初始化二、什么时候会发生类初始化1

    2022年8月11日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号