版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章复合数据类型VB.Net程序设计教程
本章学习目标:□了解数组的概述和根本用途□掌握静态数组、动态数组的声明、引用和初始化方法□了解集合的使用方法□掌握结构的概念和使用方法4.1 数组数组通常用于存储相似类型的值和对象。它允许对变量进行分组,并且允许使用索引进行检索。数组有上界和下界,它用于指示数组的开始索引值和结束索引值。另外,数组中的数据可以按序排列。简单的数组是一维的,当然,在VB.NET中也可以使用多维数组。还可以对数组进行循环,以确定或修改存储在数组中的某个值。4.1.1数组的声明与初始化1.数组的声明(1)方法一一维数组:Dim[数组名](下标上限)As<类型>二维数组:Dim[数组名](第一维下标上限,第二维下标上限)As<类型>多维数组的声明方法依此类推,本文不再赘述。数组的下标从0开始,最大下标可以是常数、变量或者表达式,数组的类型可以是整型、长整型、单精度、双精度等类型,数组声明后每个元素自动置为0,布尔型数组的每个元素将赋给False,字符串数组那么为空。例如:
DimArr(8)AsInteger
Dimatt(10)asString
Dimstu(3,5)asSingle
第一个例子中,Arr是数组名,Arr(0)表示第一个元素,Arr数组可以存储9个元素,其下标从0到8,每个元素都为Integer类型。第二个例子中,att是数组名,该数组的每个元素为String类型,数组的第一个元素是att(0),一共有11个元素,最后一个元素为att(10)。
二维数组的每个元素具有两个下标:一个表示行,一个表示列,二维数组的定义方法与一维数组相似,需定义数组名、最大行下标、最大列下标及数组类型。行号与列号的下标均从0开始。第三个例子中,定义了一个二维数组stu,一共4行、6列,共24个元素,每个元素的类型为Single。
(2)方法二Dim[数组名]As<类型>()={数据表}Dim数组名(,)As类型={{第1行数据},{第2行数据},…,{第m行数据}}每行数据个数相同。例如:DimArrAsInteger()={1,2,3,4,5,6,7}DimWordArAsString()={"Zero","One","Two"}DimData(,)AsInteger={{4,2,8,9},{3,3,2,4},{5,2,8,7}}注意:①数组的名称的定义规那么与变量名相同,且不能与变量名重名。②数组的下标从0开始。③数组元素赋的值的类型必须与数组的类型相同。④如果声明数组时不说明类型,那么数组为变体类型,即Variant型。2.数组的初始化(1)方法一
先声明数组,然后对其进行初始化。可以直接为数组的某个元素赋值,例如Arr(0)=100,也可以使用循环语句依次为数组中的每个元素赋值。例如:
Fori=0To10
Arr(i)=i
Next
对于二维数组的初始化使用嵌套循环即可,例如:
Fori=0To10
Forj=0To10
Arr(i,j)=iNext
Next(2)方法二可以使用声明中的方法二在声明的时候直接为每个元素赋值。4.1.2数组的使用数组被声明了以后,对使用数组中的元素只能逐个引用数组元素而不能一次引用整个数组。一维数组的引用格式如下:数组名(下标)。注意:(1)数组名是表示要引用哪一个数组中的元素,这个数组必须已经声明过。(2)下标用一对中括号()括起来,它表示要引用的元素在数组中的位置,下标可以是常数、变量、函数、表达式等形式。例如:a(3)、a(i+j)。(3)如果下标是负数或者超越了下标上限,系统将给出提示。数组下标从0开始。一个含有n个元素的数组,数组下标的取值范围为:0~(n-1)。例如:Dima(4)asInteger那么下标只能为0、1、2、3、4,如果引用a(5)那么发生错误。(4)如果下标是实数,将自动四舍五入取整。【例4-1】创立一个具有5个元素的数组,并实现数组的输入与输出。具体操作步骤和源程序参见教材【例4-2】创立一个简单应用程序,输入6个学生的成绩,计算他们的总成绩及平均成绩并输出。具体操作步骤和源程序参见教材【例4-3】创立一个简单应用程序,随机产生10个1到100之间的数,并按从小到大对这10个数排序并输出。具体操作步骤和源程序参见教材【例4-4】创立一个简单应用程序,随机产生10个1到100之间的数,将数组中的元素逆序排放并输出。具体操作步骤和源程序参见教材【例4-5】创立一个简单应用程序,现有10个学生,每个学生有4门课,计算每个学生的平均成绩并输出。具体操作步骤和源程序参见教材4.1.3动态数组上小节介绍的数组声明后元素的数量不能改变,如果需要改变元素的数量可以使用动态数组,用ReDim语句声明动态数组,但动态数组的维数与类型不能改变。声明格式:ReDim[Preserve]数组名(新下标上限,[新下标上限2])例如:DimarrasInteger()={1,2,3,4,5}'声明arr数组,其元素个数为5个ReDimarr(8)‘数组的元素个数从5个变为8个,各元素的值被自动清0ReDimPreservearr(8)‘数组的元素个数变为8个,原来各元素的值不变,新元素的值为0注意:①ReDim声明的数组名必须是已经定义的。②Preserve关键字可有可无,如果没有Preserve,数组经过ReDim后,原来数组的值被刷新。③如果ReDim声明时使用Preserve关键字,那么原来数组的值被保存。④新下标上限2使用于二维数组,多为数组按照同样的方式处理。【例4-6】创立一个简单应用程序,使用ReDim及ReDimPreserve定义动态数组,并观察数组输出值的不同。具体操作步骤和源程序参见教材4.1.4交错数组一个数组中的每个元素本身都是数组的数组称为“数组的数组〞或交错数组。当数据结构是两维的但不是矩形,例如,一个月份的数组,其每个元素又是天数的数组。由于不同的月份有不同的天数,元素不能构成一个矩形的两维数组。在这种情况下,可以使用交错数组而不是多维数组。例如:Dimdate()()AsDouble=NewDouble(11)(){}DimmonthAsIntegerDimdaysAsIntegerFormonth=0To11days=DateTime.DaysInMonth(Year(Now),month+1)date(month)=NewDouble(days-1){}Nextmonth例子中声明一个数组变量,数组date的每个元素本身都是表示月份的数组。每个月份数组包含该月中每天的值。New子句将该数组变量设置为一个12个元素的数组,其每个元素又是Double型元素的Double()型数组。For循环使用Year(Now)确定该年的每个月有多少天,并将date的相应元素设置为适宜长度的Double型数组。4.1.5使用ArrayList处理数组ArrayList就是数组列表,它位于System.Collections名称空间下,是集和类型。它具有一些集合的操作方法,比方遍历,查找,插入等操作。同时ArrayList还相当于一个大小可自由改变的一维数组。所以当然也可以象对待数组一样对他进行操作。使用ArrayList类必须先用New关键字新建对象。
ArrayList的常用方法为: Count:返回目前ArrayList中元素的个数 Item:取得或设置指定索引的元素值 Add:新增一个元素到ArrayList对象的尾端 AddRange:新增其它数组或ArrayList对象到数组尾端 Contains:指定的元素是否存在于ArrayList对象中 GetRange:返回一个连续范围的ArrayList对象 Insert:将指定的元素插入到ArrayList对象的指定位置 InsertRange:将指定的数组或ArrayList对象插入至ArrayList对象的指定位置 Remove:移去ArrayList中与指定值第一个相符的元素 RemoveAt:移去ArrayList指定位置的元素 RemoveRange:移去整个范围的元素 Repeat:返回指定的元素,可以指定复制的数目 SetRange:将其它集合或数组的值指定至ArrayList中 ToArray:将ArrayList类对象转为Array类对象【例4-7】创立一个应用程序,具有四个按钮“输出〞、“添加〞、“查找〞、“删除〞,完成的功能分别为输出ArrayList中的元素,向ArrayList中添加元素,在ArrayList中根据索引查找元素,删除指定元素。ArrayList中存储学生的姓名。具体操作步骤和源程序参见教材4.2 集合集合〔Collection〕是工程所组成的有序集合,可以把这个集合作为单元来引用。集合不用创立新对象或复制现有元素,它在处理大小调整时所用的执行时间比数组少,而数组必须使用ReDim。但是,如果不更改或很少更改大小,数组很可能更有效。集合一般是用来处理Object数据类型的,但它也可以用来处理任何数据类型。有时用集合存取数据比用数组更加有效。Collection对象提供了简便方法,直截了当将一组相关的工程视为单一对象来引用。集合中的工程或成员被这样一个事实联系起来:它们都属于这个集合。集合的成员不一定都是同一种数据类型的。建立集合的方法与建立其它对象的方法一样。1.建立集合
为了建立集合,必须先建立一个Collection类的实例,格式为:
Dim集合名AsNewCollection()
建立集合后,可以对集合执行以下操作: Add方法:添加元素 Remove方法:删除元素 Clear方法:删除所有元素 Count方法:查询集合的元素个数 Contains方法:查询集合中是否存在某个元素 Item方法:返回集合中的特定元素 使用ForEach……Next语句访问集合中的各个元素2.添加元素使用Add方法可以在集合中添加一个元素,Add方法的格式为:PublicSubAdd〔ByValItemAsObject,OptionalByValKeyAsString,OptionalByVal{Befor|After}AsObject=Nothing〕 Item:制定要添加到集合中的元素 Key:可选项。指定键字符串的唯一String表达式,可以用此键字符串代替定位索引访问集合的这个新元素。 Before:可选项。制定集合中的相对位置的表达式。将要添加的元素放在集合中由Before参数标识的元素前面。如果Before是数值表达式,那么它必须介于1和集合Count属性值之间的数值。如果Before是String表达式,那么必须对应于将引用的元素添加到集合时指定的键字符串。不能同时指定Before和After。 After:可选项。制定集合中的相对位置的表达式。将要添加的元素放在集合中由Before参数标识的元素后面。如果After是数值表达式,那么它必须介于1和集合Count属性值之间的数值。如果After是String表达式,那么必须对应于将引用的元素添加到集合时指定的键字符串。不能同时指定Before和After。注意:〔1〕集合中的成员可以是同一种类型的数据,也可以混合使用多种数据。〔2〕参数Key是一个字符串表达式,在一个集合中,必须是唯一的。3.删除元素从集合中删除元素可以使用Remove方法,其格式为:PublicOverloadsSubRemove〔ByVal{KeyAsString|IndexAsInteger}〕 Key必须是唯一的,为String类型,指定可用于访问集合的元素的键字符串。Key必须对应于将元素添加到集合时指定的Key参数。 Index指定集合的元素位置的数值表达式。Index必须从1到此集合的Count属性值之间的数字。4.查询元素使用Item方法能够从集合中返回某个特定的元素,其格式为:DefaultPublicReadOnlyPropertyItem〔ByVal{KeyAsString|IndexAsInteger|IndexAsObject}〕AsObject Key必须是唯一的,为String类型,指定可用于访问集合的元素的键字符串。Key必须对应于将元素添加到集合时指定的Key参数。 Index指定集合的元素位置的数值表达式。Index必须从1到此集合的Count属性值之间的数字。【例4-8】创立一个集合,存储数学、语文、英语、物理等成绩,使用Add方法向集合添加成绩,使用Remove方法删除成绩,使用循环输出所有成绩。具体操作步骤和源程序参见教材4.3结构类型4.3.1结构类型定义如果想让单个变量持有几个相关信息时结构很有用。例如,您可能想将一个学生的姓名、学号、院系、年龄等信息存储在一起。可以对这些信息使用几个变量,或者定义一个结构并将它用于单个学生变量。当有许多学生并且因此有该变量的许多实例时,结构的优点变得非常明显。使用Structure语句作为VB.NET声明结构的开始,并使用EndStructure语句作为结构声明的结束。在这两条语句之间必须至少声明一个“元素〞。元素可以是任何数据类型,但是至少一个必须是非共享变量,或是非共享非自定义事件。 声明结构的方法:[Private|Public|Private|Dim]Structure结构类型名结构体EndStructure例如:PrivateStructurestudent结构体EndStructure其中student是结构的名字,Structure是创立结构的开始语句,EndStructure是创立结构的结束语句。可以使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代科技在远程医疗服务中的应用及挑战
- 2025年度个人房产交易担保合同模板2篇
- 二零二五年度厂房租赁合同纠纷处理规则3篇
- 漯河2024年河南漯河市委办公室所属事业单位引进高层次人才笔试历年参考题库附带答案详解
- 湖北2025年湖北省水利水电科学研究院院属企业招聘11人笔试历年参考题库附带答案详解
- 2025版文化创意产业园区基础设施建设服务合同2篇
- 二零二五年度城市绿化工程承包合同样本10篇
- 二零二五年度新能源汽车充电桩投资建设合同2篇
- 二零二五年度数字货币钱包设计与安全技术服务合同3篇
- 二零二五年度常州二手房买卖合同范本:智能家居与智能家居安防监控3篇
- 2024-2025学年山东省潍坊市高一上册1月期末考试数学检测试题(附解析)
- 江苏省扬州市蒋王小学2023~2024年五年级上学期英语期末试卷(含答案无听力原文无音频)
- 数学-湖南省新高考教学教研联盟(长郡二十校联盟)2024-2025学年2025届高三上学期第一次预热演练试题和答案
- 决胜中层:中层管理者的九项修炼-记录
- 幼儿园人民币启蒙教育方案
- 临床药师进修汇报课件
- 军事理论(2024年版)学习通超星期末考试答案章节答案2024年
- 《无人机法律法规知识》课件-第1章 民用航空法概述
- 政治丨广东省2025届高中毕业班8月第一次调研考试广东一调政治试卷及答案
- 2020-2024年安徽省初中学业水平考试中考物理试卷(5年真题+答案解析)
- 铸石防磨施工工艺
评论
0/150
提交评论