使用数组和集合PPT课件

上传人:壹****1 文档编号:568199320 上传时间:2024-07-23 格式:PPT 页数:36 大小:628KB
返回 下载 相关 举报
使用数组和集合PPT课件_第1页
第1页 / 共36页
使用数组和集合PPT课件_第2页
第2页 / 共36页
使用数组和集合PPT课件_第3页
第3页 / 共36页
使用数组和集合PPT课件_第4页
第4页 / 共36页
使用数组和集合PPT课件_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《使用数组和集合PPT课件》由会员分享,可在线阅读,更多相关《使用数组和集合PPT课件(36页珍藏版)》请在金锄头文库上搜索。

1、院级精品课程院级精品课程面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计安徽机电职业技术学院信息工程系安徽机电职业技术学院信息工程系汪学文汪学文(wxwOOP)2013年年10月月( (使用使用使用使用VS 2010VS 2010和和和和C#)C#)8 使用数组和集合28 使用数组和集合数组是一种自定义类型,是引用类型。数组是一个无序的元素序列。数组中的所有元素都具有相同的类型数组中的元素存储在连续的内存块中,使用整数的索引来访问。本课主要介绍以下内容:定义和初始化数组访问数组和数组元素认识数组作为方法的参数的作用理解参数数组了解一些常用集合类的使用38.1 声明数组变量C#中

2、,可以创建一维数组type arrayName;int array1;?int array2 = new int5;int array3 = new int1,3,5,7,9;int array4 = 1,2,3,4,5,6;栈栈堆堆示例代码位于示例代码位于“Lesson7UseArray”48.1 声明数组变量C#中,还可以创建多维数组type, arrayName;int, array5 = new int2,3;int array6 = 1,2,3,4,5,6;栈栈堆堆示例代码位于示例代码位于“Lesson7UseArray”58.1 声明数组变量C#中,还可以创建交错数组(数组的数组)

3、type arrayName;int array7 = new int6;array71 = new int41,2,3,4;array72 = 1,3,5,7,9;栈栈堆堆示例代码位于示例代码位于“Lesson7UseArray”68.1 声明数组变量数组是对象,使用时要用new进行实例化允许创建大小为0的数组。数组可以是一维、多维或交错的。数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。交错数组是数组的数组,因此其元素是引用类型并初始化为 null。数组的索引从零开始:具有 n 个元素的数组的索引是从 0 到 n-1。数组元素可以是任何类型,包括数组类型。78.2 访问数

4、组成员初始化数组访问数组成员大括号中的值不都是常数,可以是在运行时通过运算而得到的值:int numbers = new int510, 9, 8, 7, 6;numbers4 = 5; string animal = Mouse, Cat, Lion; animal1= Elephant;string someAnimal = animal2;Random r = new Random();int pins = new int4 r.Next()%100,r.Next()%100, r.Next()%100,r.Next()%100;示例代码位于示例代码位于“Lesson7UseArray”

5、88.2.1 遍历整个数组使用 for语句可以遍历所有数组元素int numbers = 4, 5, 6, 1, 2, 3, -2, -1, 0; for (int i = 0; i numbers.Length; i+ ) Console.WriteLine(numbersi);示例代码位于示例代码位于“Lesson7UseArray”98.2.2 遍历整个数组使用 foreach 语句为数组中的每一个元素反复执行嵌入的代码int numbers = 4, 5, 6, 1, 2, 3, -2, -1, 0; foreach (int i in numbers) Console.WriteLi

6、ne(i);示例代码位于示例代码位于“Lesson7UseArray”108.2.3 for与foreach的比较foreach语句总是遍历整个数组。如果只需要遍历数组的特定部分(如前半部分),或者绕过特定元素(如只遍历索引为偶数的元素),最好是使用for语句。foreach语句总是从索引0遍历到索引Length-1,如果需要反向遍历,那么最好是使用for语句。如果循环体需要知道元素索引,而不仅仅是元素值,那么必须使用for语句。如果需要修改数组元素,那么必须使用for语句,因为foreach语句的循环变量是一个只读变量。118.2.4 数组的有关属性数组的属性:Length:数组包含多少个元

7、素数组的方法:Clone:获取与源数组一模一样的数组CopyTo:将源数组拷贝到目标数组的指定位置Array类的方法:Sort:排序Reverse:反转128.2.5 理解深拷贝与浅拷贝阅读教材P176关于“复制数组”一节如果数组元素是引用类型,进行数组元素复制时,只复制对象的引用,不会为新数组对象分配新的内存空间。这称为“浅拷贝”参考示例代码位于参考示例代码位于“Lesson8UseArray”中的中的Step 4这里定义了一个这里定义了一个Person数组,而数组,而Person是一个对象是一个对象138.3 认识集合数组的大小是固定的。如果要扩容,需要重新使用new来分配内存空间。有时,

8、还有其它一些要求,如:先进先出,FIFO,即队列后进先出,LIFO,即栈按键值查找,即字典功能有序教材P184192介绍了以下集合类型,请自动阅读ArrayList,顺序表Queue,队列Stack,栈HashTable,哈希表,实现字典功能SortedList,有序表148.3.1 示例:宾馆住宿程序主要学习使用集合类对象,将数据绑定到comboBox控件了解数据绑定熟悉List类型的使用158.3.1.1 定义Room类RoomType属性将对应下拉列表控制显示的名称属性将对应下拉列表控制显示的名称Price字段,用于选取下拉列表时,获取对应的值字段,用于选取下拉列表时,获取对应的值168

9、.3.2 声明列表对象并初始化指定数据源指定数据源指定显示字段指定显示字段指定值字段指定值字段也可以使用也可以使用ArrayList,但效率不高,但效率不高178.3.3 计算数据绑定后,可以使用数据绑定后,可以使用SelectedValue属性获取选择项的值,省去了原来的许多属性获取选择项的值,省去了原来的许多判断。判断。188.4 数组作为方法的参数为演示数组作方法的参数,我们来编写一组方法方法1:将数组内容转换为字符串方法名:ArrayToString功能:将数组内容转换为字符串参数:int array返回值:string, 表示数组内容的字符串示例代码位于示例代码位于“Lesson7A

10、rraySample”198.4.1 ArrayToString方法private string ArrayToString(int array) / 如果如果array为空,或者为空,或者array中无元素,返回空串中无元素,返回空串 if (array = null) return String.Empty; if (array.Length = 0) return String.Empty; string s = String.Format(0, array0); for (int i=1; i0) aver = (double)sum/array.Length;这样计算可以算可以吗?示

11、例代码位于示例代码位于“Lesson7ArraySample”28另一个Sum方法private void button3_Click(object sender, EventArgs e) Output(计算一组数计算一组数11,12,13,14,15,16,17和与平均值:和与平均值:); int sum = 0; double average = 0.0; Sum(sum, average,11, 12, 13, 14, 15, 16, 17); Output(String.Format(这组数的和是这组数的和是0,平均值是平均值是1,sum,average);因因为方法参数默方法参数默

12、认是按是按值进行行传递的。的。能不能能不能够像指像指针一一样,使用按地址,使用按地址传递呢?呢?示例代码位于示例代码位于“Lesson7ArraySample”29使用ref关键字private void Sum(ref int sum, ref double aver, params int array) sum = 0; aver = 0.0; foreach (int i in array) sum += i; if (array.Length0) aver = (double)sum/array.Length;参数列表中使用参数列表中使用ref关关键字,字,编译器就知道相器就知道相应变

13、量的数量的数值将通将通过引用来引用来传递。调用用方法方法时,也必,也必须对实参使用参使用ref关关键字字示例代码位于示例代码位于“Lesson7ArraySample”30使用ref关键字private void button3_Click(object sender, EventArgs e) Output(计算一组数计算一组数11,12,13,14,15,16,17和与平均值:和与平均值:); int sum = 0; double average = 0.0; Sum(ref sum, ref average, 11, 12, 13, 14, 15, 16, 17); Output(St

14、ring.Format(这组数的和是这组数的和是0,平均值是平均值是1,sum,average);调用用时也也须使用使用ref关关键字字示例代码位于示例代码位于“Lesson7ArraySample”318.4.6 编写第4个方法:GenerateArray方法4:给数组元素赋随机值方法名:GenerateArray功能:逐个给数组中的每个元素赋随机值参数:int array返回值:无private void button1_Click(object sender, EventArgs e) int number = new int10; GenerateArrayGenerateArray(

15、number); Output(数组中的数为:数组中的数为:); Output(ArrayToString(number); Output(String.Format(这组数的和是:这组数的和是:0, ArraySum(number);示例代码位于示例代码位于“Lesson7ArraySample”32GenerateArray方法private void GenerateArray(int array) Random r = new Random(); for (int i = 0; i array.Length; i+) arrayi = r.Next(0, 100); 因因为数数组变量本

16、身是引用量本身是引用类型,所以型,所以GenerateArray方法可以改方法可以改变array数数组元素的元素的值示例代码位于示例代码位于“Lesson7ArraySample”33另一个GenerateArray方法方法5:给数组元素赋随机值方法名:GenerateArray功能:对数组array初始化,并对每个元素赋随机值参数:int array, int count(表示要多少个数)返回值:无private void button1_Click(object sender, EventArgs e) int number; GenerateArrayGenerateArray(numb

17、er, 10); Output(数组中的数为:数组中的数为:); Output(ArrayToString(number); Output(String.Format(这组数的和是:这组数的和是:0, ArraySum(number);这儿儿说明,明,对数数组初始化要在初始化要在GenerateArray方法内部方法内部进行行示例代码位于示例代码位于“Lesson7ArraySample”34另一个GenerateArray方法private void GenerateArray(int array, int count) array = new intcount; Random r = ne

18、w Random(); for (int i = 0; i array.Length; i+) arrayi = r.Next(0, 100); 编译时出出错。使用使用ref关关键字字说明参数明参数array,编译时也会出也会出错。使用使用out关关键字字示例代码位于示例代码位于“Lesson7ArraySample”35out关键字由于C#强制性要求明确赋值,即所有参数变量在传递给方法前必须经过了初始化赋值。这样可以避免由于使用未赋值变量而导致的常见错误。通过使用关键字out,可以避免多余的初始化当需要通知编译器将在方法内部进行变量初始化时,就应使用关键字out,从而可以把未初始化的变量传递给方法。int number;GenerateArrayGenerateArray(out number, 10); private void GenerateArray(out int array, int count) 368.6 本课小结本课主要介绍数组的声明、初始化及使用数组是引用类型,通过new来初始化可以使用foreach循环遍历数组了解数组作为方法参数的作用与值类型的不同掌握方法参数数组(params)与方法的可选参数的作用与异同进一步掌握引用参数(ref)和输出参数(out)的作用了解集合类的使用初步熟悉数据绑定的使用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号