当前位置:文档之家› 数组、集合和泛型

数组、集合和泛型


4.1 数组的概念
数组具有以下属性: (1)数组可以是一维、多维或交错的。 (2)数值数组元素的默认值设置为零,而引用元
素的默认值设置为 null。 (3)交错数组是数组的数组,因此,它的元素是
引用类型,初始化为 null。 (4)数组的索引(序号)从零开始:具有 n 个元
素的数组的索引是从 0 到 n-1。 (5)数组元素可以是任何类型,包括数组类型。
第4章 数组、集.4 4.5 4.6 4.7 4.8 4.9
数组的概念 声明、创建数组 初始化数组变量 遍历数组元素 多维数组 交错数组 隐式类型数组 集合与集合接口 泛型集合
27 五月 2020
4.1 数组的概念
在程序设计过程中,经常出现同一种类型的数
数组的遍历一般通过循环实现,利用元素序号的有 规律变化,访问到数组中的每一个元素。
27 五月 2020
4.4 遍历数组元素
数组的遍历除了可以用for形式的循环实现外,还可 以通过while或do while形式的循环完成,此外,还可以 使用foreach形式完成,foreach语句提供一种简单、明 了的方法来循环访问数组的元素。与for相比,foreach只
门课程的多维数组代码为: float[,] studentsGrades = new float[35, 5];
27 五月 2020
4.2 声明、创建数组
对于交错数组,则可以在第一次创建过程中指定外层 数组元素的个数,每个数组元素所对应的数组中所包含元 素的个数可以在后继代码中指定,如以下示例。
", "赵六", "丁七" };
此数组中元素值分别为“张三”、“李四”、“王五”、“赵六 ”和“丁七”,同时,由于在初始化时,只提供了5个元素,所 以数组的大小被确定为5。
此代码也可以写成: string[ ]studentsName = new string[5]{ "张三", "李四", "王
27 五月 2020
4.2 声明、创建数组
例如,需要声明一个用于记录多名学生姓名的数组变量, 由于所有学生姓名都可以分别用一个字符串变量来记录, 那么记录多名学生姓名的数组变量声明如下:
string[ ] studentsName; 声明一个记录多名学生某一门课程考试成绩的数组变量,
由于学生考试成绩可用float类型变量来记录,那么记录 多名学生成绩的数组变量声明如下: float[ ] studentsGrade;
27 五月 2020
4.3 初始化数组变量
如果上例中,完成初始化后,数组元素的值分别对应为: studentsName[0] — 张三 studentsName[1] — 李四 studentsName[2] — 王五 studentsName[3] — 赵六 studentsName[4] — 丁七 要修改原名为“张三”的数组元素的值为“张飞”,则代码为: //第0号元素的值被修改为“张飞” studentsName[0] = "张飞"; 要读取最后一个学生(也就是第4个元素)的姓名,则代码为: //第4号元素的值读取后赋值到变量lastStudentName中 string lastStudentName = student[4];
27 五月 2020
27 五月 2020
4.2 声明、创建数组
由于实际应用中,需要记录学生的多门课程成绩, 每个学生的所上课程都一样,如果把学生的各门课程成绩 分别记录在不同的数组中,则可能无法确定同一学生的多 门课程成绩能一一对应,此时可以用多维数组实现,由于 所有课程的成绩都是小数,所以记录多名学生的多门课程 成绩的数组变量声明如下:
变量,同时完成了数组变量自身的初始化。 //创建一个最多能保存5个学生姓名的数组 string[ ]studentsName = {“张三”, “李四”, “王五”, “赵六
”, “丁七”};
此时,数组对象可以被访问,但数组元素却没有明确进行 初始化,所以所有35个学生姓名都被初始化为string类 型的默认值,其值为空,即字符串长度为0。
能顺序访问数组元素,并且只能访问不能赋值。
foreach的通用语法格式为:
foreach (数据类型 当前变量 in 集合对象)
{

//处理代码
}
其中的集合对象在数组的应用中就是数组对象,如果需要
提交结束遍历而不处理其余部分元素时,可以通过break 语句跳出foreach代码块,其用法与循环中的break相同。
//声明并创建一个交错数组,数组大小为6,数组中 这6个元素分别是一个int类型的数组,但这6个数组的大 小还未确定。
int[ ][ ] jaggedArray = new int[6][ ];
27 五月 2020
4.2 声明、创建数组
在确定数组中的元素值时,也可以在创建数组元素的同时设置数
float[ , ] studentsGrades;
27 五月 2020
4.2 声明、创建数组
在某些特殊情况下,数组中的元素本身也需要记录 多个类型相同的数据,但数组中的元素并不是包含有相同 数量的多个类型相同的数据,此时就可以使用交错数组, 交错数组又叫做数组的数组。在上例中,如果学生所上课 程门数不一样,如果需要记录所有学生的所有成程,目前 可用交错数组,声明变量如下:
4.2 声明、创建数组
和其他数据类型一样,数组对象在使用前必须先声明 和创建。数组是使用类型声明的,一维数组、多维数组和 交错数组的声明和创建方式稍有不同。
一维数组的声明格式为:数据类型[ ] 数组对象名称; 多维数组的声明格式为:数据类型[ , ] 数组对象名称; 交错数组的声明格式为:数据类型[ ] [ ] 数组对象名称; 其中的数据类型可以是任何C#的合法数据类型。
数组元素进行访问是通过数组名称及此元素在数组中的序号来实 现,其语法格式为:
数组名称[ 元素在数组中的序号] 注意:元素在数组中的序号是从0开始计数,最后元素的序号为
数组长度-1。
数组元素变量的值可以被读,也可以被写,如果数组元素在赋值 符号的左侧,则是对数组元素进行赋值(写)操作,否则是读取 数组元素的值。
27 五月 2020
4.3 初始化数组变量
下例中创建了一个能保存35个学生姓名的数组变量,同 时完成了数组变量自身的初始化。
//创建一个最多能保存35个学生姓名的数组 string[ ]studentsName = new string[35]; 下例中用另一格式创建了一个能保存5个学生姓名的数组
27 五月 2020
4.3 初始化数组变量
数组变量在创建后,还必须先初始化才能被访问。 数组变量在初始化时需要注意,数组变量自身是一个变量,
数组中所包含的所有元素也是变量,数组变量和数组元素 所对应的变量可分别进行初始化。 在上一节中创建数组的同时,实际上就是对数组变 量进行了初始化,但数据元素则不一定同时完成了初始化。 对于数据元素的数据类型为int、float、string等基本数 据类型的数组,其数据元素在数组变量创建的同时完成初 始化,数据元素的值被初始化为对应类型的默认初始值。
27 五月 2020
4.5 多维数组
数组可以具有多个维度,就象现实世界可以有二维 空间、三维空间一样,对应的称为二维数组、三维数组等。 二维数组可以被看成为多行多列的多个元素组成,行数即 是第0维的长度,列数即为第1维的长度。
多维数组的使用与一维数组的基本一致,只是访问 数组元素时,必须指定元素在每一维中的序号。
据需要进行统一管理和操作的情况,例如:同一个 班级中有多名学生,班级内的所有学生信息需要统 一进行统计、排序等操作。为方便实现这些对同一 类型数据的处理,可以使用数组这一数据结构。数 组(array)是一种数据结构,是一个包含相同数 据类型的数据的集合,可以通过数值索引来访问其 中的所有数据成员(数组元素)。C#中的数组一般 分为:一维数组、多维数组和交错数组,此外还有 特殊隐式类型数组。
27 五月 2020
4.3 初始化数组变量
以下代码则完成了数组变量和数组元素的初始化,各数组元素被 明确的赋给了指定的值:
//创建一个最多能保存5个学生姓名的数组,同时对这5个学生 姓名进行赋值
string[ ]studentsName = new string[]{ "张三", "李四", "王五 ", "赵六", "丁七" };
五", "赵六", "丁七" };
27 五月 2020
4.2 声明、创建数组
注意:其中指定的数组大小必须正好等于大括号中
指定的元素初始值的个数,否则编辑将出错。此情况的推 荐写法是不指定数组大小,而是由元素个数自动确定数组 大小,否则在代码进行修改后,可能反而出现语法错误。 例如前例中,虽然指定数组大小为5同样正确,但如果程 序根据实际需要,“丁七”不再是此数组中的成员,则修 改代码时删除此初始值,代码如下: string[ ]studentsName = new string[5]{ "张三", "李四 ", "王五", "赵六"};//仅删除丁七值 则由于初始化只提供了4个数组元素,与指定的数组 大小不一致,则出现语法错误,错误提示为:无效的秩说 明符: 应为“,”或“]”。
4.2 声明、创建数组
数组具有以下属性: (1)数组可以是一维、多维或交错的。 (2)数值数组元素的默认值设置为零,而引用元
素的默认值设置为 null。 (3)交错数组是数组的数组,因此,它的元素是
相关主题