分享
 
 
 

在VB.NET编程中使用数组

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

数组是程序中经常要使用到的一种数据类型,Visual Basic .Net中的数组,虽然语法结构等方面保留了和Visual Basic的很多相似之处,但也与Visual Basic存在着很多区别。其最大,也是各位Visual Basic程序员所最不能容忍的区别就是如下二点:

1. 在Visual Basic .Net中申明一个数组,其数组元素中的索引值的起点全部都为“0”,而不是以前Visual Basic中的索引值起点一般都为“1”。这种定义方法和Visual Basic .Net的孪生姐妹Visual C#非常相似。

2. 由于在Visual Basic .Net中数组都有了统一的起点,所以在Visual Basic .Net中定义一个数组,也就不再需要关键字“To”来设定数组的范围。这样在Visual Basic .Net中申明一个数组将会比Visual Basic中要稍微简洁一点。关于数组定义将在后面详细介绍。

一.本节主要内容:

在接下来内容中,将结合具体示例来详细的介绍下列知识点:

1. 申明数组,其中包括一维数组、多维数组,也包括静态数组和动态数组,及其初始化。和访问数组中的元素。

2. 重新申明数组,即ReDim语句的使用用法,及其Preserve关键字的作用。

3. 使用For Each …. Next语句来遍历数组中各个元素,For Each …. Next语句是操作数据最为常用的一种语句,它能够方便的访问到数组中的每一个元素。

4. 申明参数为数组的过程或者函数,由于数组是引用类型,所以在申明参数为数组的函数或过程时,处理方法与参数为值类型的函数或过程有点不一样。

5. 简要介绍Array类和其主要的常用,以及通过Array类操作数组的具体方法。

二.申明、初始化数组和访问数组中的元素:

在Visual Basic .Net申明一个数组使用的依然是Dim语句,其申明数组和Visual Basic的主要区别在上面内容中已经简单说过了。下面在Visual Basic .Net申明一个长度为“3”的字符串数组,并对之进行初始化的代码:

Dim arrString ( 2 ) As String = {"星期一","星期二","星期三"}

下面代码是申请一个2×2的二维字符串数组,并对之进行初始化:

Dim arrDate ( 1, 1 ) As String = {{"星期一", "18号"}, {"星期二", "19号"}}

静态数组和动态数组的区别就在于静态数组的长度是固定的,而动态数组的长度是不固定的。上面的申明的二个数组就是静态数组,而下面二段代码的作用就是分别申明一个一维数组和二维数组,并对它们进行初始化:

Dim arrString ( ) As String = {"星期一","星期二","星期三"}

'申明一个动态的一维数组,并初始化

Dim arrDate ( , ) As String = {{"星期一", "18号"}, {"星期二", "19号"}}

'申明一个动态的二维数组,并初始化

对其他数据类型和更多维数的数组,其申明和初始化方法和上面的基本差不多,只需根据数组的维数和数据类型的不同进行相应的修改就可以了。

当数组申明和初始化以后,就可以通过元素在数组中对应的索引值来访问,下面二段代码分别是访问上面申明并初始化的一维数组和二维数组中的一个元素:

Dim sTemp1 As String = arrString ( 1 )

'访问arrString数组中的第2个元素

Dim sTemp2 As String = arrDate ( 1 , 1 )

'访问arrDate数组中的第二行、第二列元素

三.重新申明数组:

在Visual Basic .Net重新申明数组和Visual Basic中基本类似,依然使用的是ReDim语句。在Visual Basic .Net中使用ReDim语句要注意以下三点:

1. ReDim语句仅可以在过程级出现。这意味着不可以在类或模块级代码区使用ReDim语句来重新申明数组。

2. ReDim语句只是更改已被正式声明的数组的一个或多个维度的大小,但不能更改该数组的维数。

3. ReDim语句无法更改数组中元素的数据类型,和Dim语句申明数组的区别在于无法在ReDim语句中初始化重新申明的数组。

在使用ReDim重新申明数组时,最为常见的关键字就是“Preserve”。“Preserve”的作用是表明在重新申明数组时,是否要在重新申明的数组中复制原数组中的元素。请比较下面二段代码:

代码一:

Dim arrString ( 2 ) As String = {"星期一","星期二","星期三"}

ReDim Preserve arrString ( 4 )

'重新申明arrString数组,数组的长度改为5,并且在新数组中复制原数组的元素

arrString ( 3 ) = "星期四"

arrString ( 4 ) = "星期五"

代码二:

Dim arrString ( 2 ) As String = {"星期一","星期二","星期三"}

ReDim arrString ( 4 )

'重新申明arrString数组,数组的长度改为5,并不往新数组中复制原数组的元素

arrString ( 0 ) = "星期一"

arrString ( 1 ) = "星期二"

arrString ( 2 ) = "星期三"

arrString ( 3 ) = "星期四"

arrString ( 4 ) = "星期五"

通过比较上述二段代码,可见,在第一段代码中由于ReDim中使用了Preserve关键字,所以在重新申明数组时,就在新数组中复制了原数组的元素,这样就只需要对其中的二个元素进行初始化;而第二段由于没有使用Preserve关键字,就没有在新数组中带入原数组中的任何元素,所以对数组的所有元素都进行初始化。通过比较相信您对重新定义数组和“Preserve”关键字的使用有了更深的理解。

四.For Each …. Next语句在数组中的使用:

For Each …. Next语句好像只是为二种数据类型专门度身定做的,其一就是集合,另外一个就是数组了。通过For Each …. Next语句,可以十分方便的访问数组中的任一元素。请仔细分析一下下列代码:

Dim arrString ( 2 ) As String = {"星期一","星期二","星期三"}

Dim Temp As String

For Each Temp In arrString

If Temp = "星期三" Then

MsgBox ( "在数组中寻找到""星期三""字符串")

Exit For

'退出For Each …. Next语句

End If

Next

上面代码的功能是通过For Each …. Next语句访问arrString数组中各元素,如果发现有元素为字符串“星期三”,则弹出提示框,并退出循环。

同样用For … Next语句也能够实现上面同样的功能,只是感觉有点不专业,并且有点繁琐,下面代码是用For … Next语句实现上面For Each …. Next语句同等功能的代码:

Dim i As Integer

For i = 0 To myString.Length - 1

If arrString ( i ) = "星期三" Then

MsgBox ( "在数组中寻找到""星期三""字符串" )

Exit For

End If

Next

五.申明参数为数组的过程或者函数:

由于数组为引用类型,所以如果以数组为参数过程和函数在定义时候就要多加以注意,下面代码是在Visual Basic .Net申明一个参数为数组的过程的典型代码,可见在调用数组类型之前多了一个关键字“ByVal”,“ByVal”关键字的作用在于在下面调用的过程中的不能更改数组的数值:

Sub DisplayArray ( ByVal myString ( ) As String )

End Sub

六.简要介绍System.Array类及其成员:

Array类是一个基类,是公共语言运行库中所有数组的基类。它提供了创建、操作、搜索和排序数组的方法。数组中任一个元素就是Array中的一个值。Array的长度是它可包含的元素总数。Array的秩是Array中的维数。Array中维度的下限是Array 中该维度的起始索引,多维Array的各个维度可以有不同的界限。表01和表02分别是Array类的常用属性和常用方法及其说明:

七.一个处理数组的具体示例:

下面介绍的示例的功能包含了数组的申明、初始化、重新申明、重新初始化、数组中各元素的排序、数组的遍历、查找以及以数组为参数的过程的定义及调用方法等。下面是此示例实现的具体步骤:

1. 启动Visual Studio .Net。

2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

3. 将【项目类型】设置为【Visual Basic项目】。

4. 将【模板】设置为【Windows应用程序】。

5. 在【名称】文本框中输入【数组】。

6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在“E:\VS.NET项目”目录中就产生了名称为“数组”的文件夹,并在里面创建了名称为【数组】的项目文件。

7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应操作:

四个Button组件,分别用来创建一个“创建一维数组”、创建“创建二维数组”、实现对“对一维数组排序”和实现“重定义一维数组”。并在这四个Button组件拖入Form1的设计窗体后,分别双击这四个组件,这样系统会在Form1.vb文件分别产生这四个组件的Click时间对应的处理代码。

一个ListBox组件,用来显示创建的一维数组的内容。

8. 按照表03中数值来设定设定组件的主要属性:

并按照图01中各组件的位置、大小和排列方式来调整窗体中各个组件:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有