Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VB.NET 数组的定义 动态使用 多维数组

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

作者头像
全栈程序员站长
发布于 2022-07-13 08:33:59
发布于 2022-07-13 08:33:59
4.1K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

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

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

(1)VB.NET数组的声明

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim arrayl(3)As Integer  

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Public counttype(20)as string  

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Public Sub Ipaddress()  
   
   Static server(30)as string  
   
   End Sub 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   New array initialization syntax  
   
   Dim arrayl As Integer()={248} 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //声明一个一维数组具有3个元素,下标从02  
   
   Dim arrayl(3)As Integer  
   
   arrayl(0)2  
   
   arrayl(1)=4  
   
   arrayl(2)=8 

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   StatiC multidim(1010)as double  
   
    Public Singledim(58103)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对于一维数组而言,仅仅须要一个參数,那便是数组名。比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   one==Ubound(arrayl) 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   tw0=Lbound(multidim,7) 

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

(3)动态数组

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim types(  )  As integer 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   ReDim Types(X+1)  

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   ReDa_m PresetVe Types(1023) 

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

(4)VB.NET数组的使用

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim x As Integer  
   
     F0r Each x In arrayl  
   
     Console.WriteLine(x)  
   
     Next 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim i As工nteger  
   
      F0r i=0 T0  (arrayl.Length-1)  
   
    
   
      Console.WriteLine(arrayl(1)J  
   
      Next i  

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim arrayl(33)AS Integer  
   
       Dim array2 As Integer()  
   
       Redim array2(33)  
   
       Dim array3 As Integer()={{24}{1229}}  

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

(5)数组的高级特性

①数组的数组

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Dim I as integer  
   
   //声明一个integer类型的数组  
   
   Dim grade(15)as integer  
   
   For i:0 tO 14  
   
   Grade(i)=i  
   
   NeXt i  
   
   //声明一个string类型的数组  
   
   Dim name(15)as String  
   
   For i=0 tO 14  
   
   Name(i):”Student”&cstr(i)  
   
   Next i  
   
   //声明一个新的数组为object,用来组装其它数组  
   
   Dim Student(2)as object  
   
   Student(0)=grade  
   
   Student(1)=name  
   
   Msgbox(student(0)(2))  //显示”2Msgbox(student(1)(3))  //显示”student 3”。 

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

②数组和集合

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA数组(五)数组函数2
大家好,上节介绍了VBA数组中的LBound和UBound等函数,本节介绍剩余的数组函数,Erase函数、Split函数和Join函数。
无言之月
2019/10/13
3.3K0
VBA数组(二)声明数组
大家好,上节介绍了数组的维度,索引号、上界和下界的知识,本节继续介绍数组的基础知识,包括数组的分类,以及如何声明数组。关于数组的内容相对抽象,会尽量介绍详尽。
无言之月
2019/10/13
3.8K0
VBA数组(四)数组函数
VBA中操作数组的函数主要有以下几个,LBound函数和UBound函数、Array函数、IsArray函数、Erase函数、Split函数、Join函数,后面分两节介绍数组函数。
无言之月
2019/10/13
6.5K0
科幻电影看多了 碰到多维数组 请冷静一下
说在前面的话:其实越是基础的知识,讲起来难度越大,因为越是基础,它就越偏向底层,你看得到的知识就那么多,但是你看不到的地方有大量的你暂时不需要知道的知识,所以只讲简单的,几句话就搞定了。
用户5745563
2019/07/04
5380
科幻电影看多了 碰到多维数组 请冷静一下
VBA数组(六)动态数组
大家好,前面已经介绍过了如何声明数组、数组赋值、静态数组和数组函数等等知识点,本节主要讲解动态数组。
无言之月
2019/10/13
7.8K0
在VB.net中 List(of string())与Arr(,)有什么区别
在VB.NET中,List(Of String())和Array(,)是两种不同的数据结构,它们之间存在一些关键的区别。
哆哆Excel
2024/02/03
8400
在VB.net中 List(of string())与Arr(,)有什么区别
Excel VBA解读(153): 数据结构——基本的数组操作
创建了一个可以容纳6个Long型数据的数组,第一个元素的索引值为0,最后一个元素的索引值为5,如下图1所示。
fanjy
2019/07/25
2.6K0
vb.net 学习「建议收藏」
注:因为百度上说的都太宏观了,目前还是刚刚接触这个,是从名字上去理解,有其他见解可以留言或后面我有不同感悟再改
全栈程序员站长
2022/06/24
4K0
vb.net 学习「建议收藏」
VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)
VBA/VB6移除数组中重复的数据 需要引用 'Microsoft Scripting Runtime' Function ArrDelAsMe(ByVal arr As Variant) As Variant ''数组去重复项包括重复项自身 ' 这个函数是移除数组中重复的数据,包括自身
办公魔盒
2019/07/22
5.9K0
VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)
[2013.9.10]vb.net坑爹的数组
VB.net: dim arr() as integer 或dim arr as integer()
ApacheCN_飞龙
2019/02/15
7210
VBA中动态数组的定义及创建
大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有大小的数组。当我们事先知道数组的大小,我们可以直接声明为静态数组。固定数组定义方法:DIM 数组名(<下届>TO<上届>)。
用户8870853
2021/07/27
4.2K0
C#中的 Array和ArrayList
大家好,我是苏州程序大白,讲讲上个文章提到的Array。内容有点多。我这里会持续更新,希望大家关注我、支持我,谢谢大家。不废话了下面我们开始。
苏州程序大白
2021/08/13
2K0
C#中的 Array和ArrayList
VBA转VB.Net VSTO学习记录-3
yhd-VBA转VB.NetVSTO学习记录-3 【目标】想搞个插件 【学习内容】 本次学习内容有VB.net数组、列表、字典 学习它们相关的属性与方法 以下学习在VSTO外接程序中测试通过 【目录】 数据类型 —维数组输出二维数据输出字典输出 读取单元格 读取区域读取一行中A1:J1读取你选中区域 【代码】 【放上代码,方便复制、粘贴学习之用】 '一维数组写入单位元格测试,Ubound上标界,Length长度 Private Sub Button4_Clic
哆哆Excel
2022/10/31
7700
VB.net中,List有什么方法与属性
Capacity:获取或设置列表能够包含的元素的数量。当添加元素时,如果当前容量不足以容纳新元素,列表的容量将自动增加。
哆哆Excel
2024/02/26
1.1K0
VB.net中,List有什么方法与属性
VBA中数组、集合和字典(二)——对数组变量的赋值
上次我们对比学习了一下ExcelVBA中数组、集合和字典的概念和声明语法,我个人觉得在声明部分,三者的区别还是挺大的。下面我们一块学习一下赋值方面的知识点,因为内容较多,我们今天就先学习一下给数组变量赋值的内容
用户8870853
2021/07/27
7.9K0
asp动态数组
本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组。
全栈程序员站长
2022/07/09
7K0
java多维数组
Java 是一种高级编程语言,广泛应用于各种软件开发和企业应用中。Java 语言支持多维数组,这是一个非常强大和有用的特性。多维数组可以帮助开发人员处理各种复杂的数据结构和算法,同时提高代码的可读性和可维护性。本文将详细介绍 Java 多维数组的概念、用法和示例。
堕落飞鸟
2023/04/03
2.2K0
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。 例如: int[][] map; char c[][]; 和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度。  ---------------------------------------------
Angel_Kitty
2018/04/09
1.5K0
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
Vb.net/VB 声明API功能父窗口功能[亲测有效]
回想第一次敲房费,他说自己是api函数实现父窗口及其子窗口最小化的功能。现在再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course!
全栈程序员站长
2021/12/18
9170
Vb.net/VB 声明API功能父窗口功能[亲测有效]
在VB.net中,一维数组排序有什么方法
Array.Sort 方法是最简单且直接的方式。这个方法会直接对数组进行排序,不会返回一个新的数组,而是修改原数组。
哆哆Excel
2024/03/22
8620
在VB.net中,一维数组排序有什么方法
推荐阅读
相关推荐
VBA数组(五)数组函数2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验