资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 数组、结构与集合,本章讲述的主要内容 5.1 数组 5.2 结构和枚举 5.3 集合类,5.1 数组,在现实生活中有着各种各样的数据,这些数据在所讨论的问题中可分为两类:一类是仅与其取值有关,而与其所在的位置无关;更常见的另一类是不仅与其取值有关,并且与其所在的位置也密切相关,如二维表格中的数据与其所在行列坐标有着密切的关系。 前面我们所讲过的变量都是简单变量,利用简单变量可以解决不少问题,但是如果在程序设计中仅使用简单变量,势必受到简单变量单独性和无序性的限制,而难于或无力解决那些数据不仅与取值有关,而且与其所在位置也有关的较复杂的问题,如学生成绩就隐含着名次和成绩。要想方便地解决这些问题,通常需要借助于复杂数据类型即数组。数组是一些具有相同类型的数据按一定顺序组成的序列,数组中的每一个数据都可以通过数组名及唯一索引号(下标)来存取。,5.1 数组,5.1.1 声明和访问数组 1. 一维数组 如果只用一个下标就能确定一个数组元素在数组中的位置,则称该数组为一维数组。也可以说,由具有一个下标的下标变量所组成的数组称为一维数组。声明一维数组的格式为: Dim 数组名(最大索引值) As 数据类型 说明: 1) “数组名”应遵循VB的变量命名规则。 2) “最大索引值”用来指定数组中包含的元素数量。若省略该值,则表示数组的大小不确定。 3) “数据类型”用于指定数组元素的数据类型,如String、Integer等。,5.1 数组,5.1.1 声明和访问数组 2. For Each循环语句 VB专门提供了一种用于依次访问数组所有元素的For Each循环语句,这种依次循环访问方式也称为“遍历”。For Each语句的语法格式为: For Each 变量名 In 数组名称 循环体语句 Next 其中的“变量名”表示一个用于依次存放各数组元素的变量,其类型必须与数组元素的类型一致。在需要遍历所有数组元素时,特别是在数组长度不易确定的环境中,使用这种For EachNext语句就很方便。,5.1 数组,5.1.1 声明和访问数组 3. 多维数组 下标数量大于等于2的数组称为“多维数组”。在多维数组中,比较常用的是二维数组,其数据组织形式与常见的二维表格十分相似。声明二维数组与声明一维数组的语法格式类似,例如: Dim ary1(3, 4) As Integer 声明一个4行5列的数组 声明一个两索引最大值不确定的二维数组 Dim ary2(,) As Integer 声明多维数组时,用逗号表示维数,一个逗号表示二维数组,两个逗号表示三维数组,依次类推。,5.1 数组,5.1.2 Array类 Visual Studio提供的Array类中包含了一些适用于数组常用操作的方法,使用这些方法能完成数组清零、复制、排序、反转等常用操作。Array类的常用方法见表5-2。,5.1 数组,5.1.3 控件数组 1. 声明控件数组 声明控件数组与前面介绍过的声明数组的方法相同,只是将数据类型指定为特定的控件类。声明控件数组的语法格式为: Dim 控件数组名(n) As 控件类型 其中,控件类型为各控件在工具箱中的名称,如Label、Button、TextBox等等;数组名为用户指定的数组名称;n为数组包含的元素个数。 例如,下列代码声明了一个包含4个元素的标签控件数组。 Dim LabelArray(3) As Label,5.1 数组,5.1.3 控件数组 2. 为控件数组赋值 为控件数组赋值的方法与为普通数组赋值的方法类似,可以在声明数组时赋值,也可以在声明后单独赋值。 例如,希望将已添加到窗体中的3个标签控件Label1Label3,组成一个控件数组的代码如下: 声明包含4个元素的控件数组 Dim LabelArray(3) As Label LabelArray(0) = Label1 为各数组元素赋值 LabelArray(1) = Label2 LabelArray(2) = Label3,5.1 数组,5.1.3 控件数组 3. 使用控件数组 控件数组创建并赋值后,可以像对普通数组那样通过循环操作数组元素,这对简化代码编写是十分有意义的。 【演练5-3】,5.2 结构和枚举,5.2.1 结构 结构类型用于处理一组类型不同而内容相关的数据,可以把结构理解成一个包含有若干成员的新的数据类型。结构中的成员可以是使用各类访问修饰符修饰的字段、属性、方法甚至是事件。 1. 定义结构 结构的定义需要使用Structure关键字,其语法格式为: 访问修饰符 Structure 结构名称 访问修饰符 成员1 As 数据类型 访问修饰符 成员2 As 数据类型 访问修饰符 成员n As 数据类型 End Structure,5.2 结构和枚举,5.2.1 结构 2. 声明结构变量 定义结构后,一个新的数据类型就产生了,可以像使用基本数据类型那样,用结构来声明变量。例如: Dim Emp As Employee 声明一个Employee结构类型变量Emp 从上述代码中可以看出,“Employee”如同Integer、String、Char等一样,是一种数据类型,Emp是该类型的一个实例化的对象。只不过前者是用户自定义的数据类型,后者是VB预定义的数据类型。,5.2 结构和枚举,5.2.1 结构 3. 访问结构变量 一般对结构类型对象的访问都要转化为对结构中的成员的访问,由于结构中的成员都依赖于一个结构类型对象,因此使用结构中的成员必须首先声明一个结构类型的对象,这与类的实例化非常相似。访问结构类型变量成员的语法格式为: 结构变量名.成员名 例如: Dim emp As Employee emp.EmployeeName = “zhangsan “ emp.EmployeeNo = “1101“ Label1.Text = emp.AddSalary(3000, 0.1) 调用结构的方法 Label2.Text = emp.CompanyName 访问结构的属性,5.2 结构和枚举,5.2.1 结构 4. 结构与类的比较 通过前面的介绍,可以看出结构的声明、实例化和使用方法与类都十分相似。在结构中也可以定义字段、属性、方法等成员,也可以使用访问修饰符限制结构成员的可访问范围。通常可以将结构理解成一个简化的类。需要注意的是,结构和类是完全不同的两个概念,它们之间存在着以下几个主要的不同点: 1) 结构是值类型,而类是引用类型。 2) 结构不能实现继承。 3) 结构字段不能有初始值,而类成员可以有初始值。 4) 每个结构都自动带有一个不带参数的隐式的、不可更改的构造函数,该构造函数将结构的所有字段初始化为默认值。而类可以具有多个构造函数,可以将字段初始化成需要的任意值。,5.2 结构和枚举,5.2.2 结构数组应用示例 所谓“结构数组”实际上就是以结构为类型创建的数组。例如,下列语句就以结构Employee为类型创建了一个包含有100个数组元素的Emp结构数组。 Dim Emp(99) As Employee 访问结构数组与访问各种基本类型数组的方法完全相同。例如,下列语句可以将结构数组Emp中第18个元素的EmployeeName成员值显示到文本框中。 TextBox1.Text = Emp(17).EmployeeName 【演练5-4】,5.2 结构和枚举,5.2.3 枚举类型 1. 定义枚举类型 定义枚举类型使用关键字Enum,定义枚举类型的一般格式为: Enum 枚举类型名称 As 数值类型 成员1 =整数表达式 成员2 =整数表达式 成员n =整数表达式 End Enum,5.2 结构和枚举,5.2.3 枚举类型 2. 声明与访问枚举变量 声明枚举变量与声明基本类型变量的格式相同,例如: Dim S As SolarSystem 声明一个枚举类型变量S 也可以在声明枚举变量的同时为变量赋值。枚举变量的值,必须是枚举成员,枚举成员需要用枚举类型引导,例如: Dim S As SolarSystem = SolarSystem.Sun为枚举变量S赋值Sun 对枚举变量的访问如同对基本类型变量的访问,例如: 将枚举成员的值赋给整型变量RadiusForSun Dim RadiusForSun As Integer = SolarSystem.Sun,5.3 集合类,5.3.1 ArrayList集合 在相关数据个数确定的情况下,可以采用数组来存储处理这些数据。但在实际应用中,很多时候数据的个数是不能确定的,此时采用数组处理问题就显得有些麻烦了。VB提供的ArrayList集合类,可以在程序运行时动态的改变存储长度,添加或删除元素,故可以将其理解认为一个动态数组。 1. 声明ArrayList对象 VB语言提供了以下3种语法格式来声明ArrayList对象。 1) Dim 对象名 As New ArrayList 2) Dim 对象名 As New ArrayList(长度) 3) Dim 对象名 As New ArrayList(集合对象),5.3 集合类,5.3.1 ArrayList集合 2. 为ArrayList对象赋值 为ArrayList对象赋值时需要使用Add()或Insert()方法。 (1) Add()方法 该方法用于向ArrayList对象的尾部添加一个新元素并赋以指定的值,其语法格式为: ArrayList对象名.Add(值) (2) Insert()方法 该方法用于向ArrayList对象的指定索引处添加一个新元素并赋以指定的值,新元素添加后,后面原有元素的索引值依次后延。Insert方法的语法格式为: ArrayList对象名.Insert(索引值, 元素值),5.3 集合类,5.3.1 ArrayList集合 3. 访问ArrayList对象 访问ArrayList对象元素的方法与访问数组元素的方法相同,同样可以使用For、Do循环或使用For Each语句实现对ArrayList对象元素的遍历。例如: Dim MyList As New ArrayList(4) MyList.Add(txtName.Text) MyList.Add(txtSex.Text) MyList.Add(txtAge.Text) MyList.Add(txtAddress.Text) Dim Element As String For Each Element In MyList 遍历MyList所有元素 LabelResult.Text = Element & “ “ Next,5.3 集合类,5.3.1 ArrayList集合 4. ArrayList对象的常用属性 ArrayList对象的常用属性见表5-2。,5.3 集合类,5.3.1 ArrayList集合 5. ArrayList对象的常用方法 除了前面介绍过的Add()和Insert()方法外,ArrayList对象还拥有众多用于实现不同功能的方法,其中较常用的方法有: AddRange、InsertRange、CopyTo、Clear、Remove、RemoveAt、 RemoveRange 、Contains、IndexOf、LastIndexOf、Sort、 Reverse等。,5.3 集合类,5.3.1 ArrayList集合 6. Array类与ArrayList类的主要区别 数组Array类与ArrayList类之间有很多相似的地方,但是区别也很多,主要表现在如下几个方面。 1) ArrayList类相当于一维数组,不支持多下标。 2) Array类中存储的元素类型必须一致,而ArrayList可以存储不同类型的元素。 3) Array类在创建时必须指定大小且是固定的,不能随意更改。而ArrayList创建时可以不指定大小,使用过程中其容量可以根据需要进行扩充。 4) Array类对
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号