第3章-C#编程基础(下)-new

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效第三章C#编程基础(下)让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效引用类型和值类型让IT教学更简单,让IT学习更有效目标在本章,你将学到:描述内存分配使用结构使用枚举实施数组使用集合让IT教学更简单,让IT学习更有效3.1内存分配分配给变量的内存有两种:值类型:所有内置数据类型,诸如int,char和float都是值类型;自定义类型:结构和枚举。引用类型:包括引用内存块的地址。数据类型(如string和class,数组和集合)是引用类型。让我们了解内存分配概念的详情。让IT教学更简单,让IT学习更有效提问•值类型的变量变量名表示一定的存储单元,代表了这些存储单元存储的值,即变量的值inta;执行的时候,内存如何操作?aa表示分配的内存的地址还是存储的值?2001让IT教学更简单,让IT学习更有效内存分配•值类型的赋值操作:intNum1;Num150Num1=50;intNum2;num2Num2=Num1;50Num1=60;60Num1和Num2分别占用不同存储空间赋值操作执行的是拷贝操作即值类型的赋值是拷贝值的操作让IT教学更简单,让IT学习更有效内存分配•引用类型carSu=newcar();等价形式carSu;声明一个car类型的变量Su=newcar();Sunewcar()对象存储空间20012001CarMe;Me=Su;Me2001思考:Su.mode=10则Me.mode的值为多少?让IT教学更简单,让IT学习更有效3.2自定义值类型-结构类型•结构类型是多种类型的统一体structStudentScoreList{publicstringid;publicstringname;publicintscore;}StudentScoreLists1;其中,s1是一个StudentScoreList结构类型的变量。对结构成员的访问通过结构变量名加上访问符“.”号,再跟成员的名称:s1.name=Tom;让IT教学更简单,让IT学习更有效•结构体是值类型•结构不能继承•结构没有缺省构造器代码struct1.cs让IT教学更简单,让IT学习更有效枚举类型•在实际生活中要表示一个星期的某一天,我们可以用0,1,…6来表示,但这样不直观,如果用sat,sun,mon,tue,wed,thu,fri来分别表示0,1,…6就好了•要实现上述问题,可以用枚举类型让IT教学更简单,让IT学习更有效枚举类型的定义要进行枚举,可以使用enum关键字。以下是声明枚举类型Days的示例:enumDays{Sat,Sun,Mon,Tue,Wed,Thu,Fri};0123456枚举类型中的每个成员对应一个整数值让IT教学更简单,让IT学习更有效枚举类型的使用声明枚举类型后,您可以用与任何其他数据类型相同的方式来使用枚举类型,如以下代码所示:intFirst_Day=(int)Days.Sat;intLast_Day=(int)Days.Fri;类型名.成员让IT教学更简单,让IT学习更有效usingSystem;enumColor{Red,Green=10,Blue}classTest{staticvoidMain(){Console.WriteLine(StringFromColor(Color.Red));Console.WriteLine(StringFromColor(Color.Green));Console.WriteLine(StringFromColor(Color.Blue));}staticstringStringFromColor(Colorc){switch(c){caseColor.Red:returnString.Format(Red={0},(int)c);caseColor.Green:returnString.Format(Green={0},(int)c);caseColor.Blue:returnString.Format(Blue={0},(int)c);default:returnInvalidcolor;}}}让IT教学更简单,让IT学习更有效字符串string•String对象为不可变对象•stringst;•st=“dfddf”;•st=st+”dfdf”;让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效课堂练习输入一行字符串,统计并输出字符串中大写辅音字母的个数(大写辅音字母:除“A”,“E”,“I”,“O”,“U”以外的大写字母)。让IT教学更简单,让IT学习更有效3.3数组•3.3.1数组的定义–数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。–在C#中,可以使用下面的语句来定义一个数组。–上述语句就相当于在内存中定义了100个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0。让IT教学更简单,让IT学习更有效3.3引用类型-数组数组是相同数据类型值的集合。下图显示系统内存中的数组结构。num012让IT教学更简单,让IT学习更有效引用类型-数组•数组的声明在程序中使用数组之前需要先声明数组。可以使用以下语句声明一维数组:数据类型[]数组名;让我们通过一个示例来了解数组声明的各种元素的解释。让IT教学更简单,让IT学习更有效int[]Score;数据类型数组名目前还没有分配数组存储空间让IT教学更简单,让IT学习更有效举例:int[]anArray;//声明一个整型的一维数组float[]anArrayOfFloats;//声明一个浮点型的一维数组string[]anArrayOfStrings;//声明一个字符串型的一维数组声明数组变量时,还没有创建数组,还没有为数组中元素分配任何内存空间,因此,声明数组后,需要对数组实例化(初始化)。使用new关键字来创建数组的实例。另外,在初始化时指定数组的大小。anArray=newint[5];注意元素下标从0开始,上界为4给数组分配了5个元素,元素分别为anArray[0],anArray[1],anArray[2]anArray[3],anArray[4]让IT教学更简单,让IT学习更有效3.3数组•数组的定义–接下来,通过两张内存图来详细地说明数组在创建过程中内存的分配情况。0x300000…………00newint[100]int[]x(数组的首地址)0x3000X[0]X[1]X[98]X[99]内存让IT教学更简单,让IT学习更有效3.3数组•数组的定义–定义数组以及访问数组中的元素让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效数组赋值•在初始化时赋值int[]Score={5,10,15};int[]Source=newint[5]{0,1,2,3,4};•使用数组下标给数组元素赋值int[]Score=newint[3];//隐式初始化0Score[0]=10;让IT教学更简单,让IT学习更有效3.3数组•数组的定义–为数组中的元素赋值让IT教学更简单,让IT学习更有效3.3数组•数组的定义–在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:–但是为了简便,建议采用第二种方式。让IT教学更简单,让IT学习更有效3.3数组•3.3.1数组的定义–数组静态初始化的效果:让IT教学更简单,让IT学习更有效脚下留心•3.3.1数组的定义–1、每个数组的索引都有一个范围,即0~Length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错。让IT教学更简单,让IT学习更有效脚下留心•3.3.1数组的定义–2、在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常。让IT教学更简单,让IT学习更有效讨论int[]Source=newint[10]{0,1,2,3,4};int[]Target=Source;Target[0]=10;则Source[0]的值为多少?让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效操作数组元素•利用数组下标操作数组元素•foreach循环是专门用于操作数组的。以下是foreach语句的语法:foreach(数据类型变量名in数组名){//statements}Type1.prj让IT教学更简单,让IT学习更有效举例classforeachexp{staticvoidMain(){int[]num={1,4,6,78,8,5,4,5,6};foreach(intkinnum){Console.WriteLine(“{0}\t”,k);}Console.ReadLine();}}让IT教学更简单,让IT学习更有效3.3数组•数组的常见操作–1、数组遍历•在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。让IT教学更简单,让IT学习更有效课堂练习输入数字字符串,统计字符串中各个数字之和提示:关键步骤:让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效3.3数组•3.3.3多维数组–多维数组可以简单地理解为在数组中嵌套数组,在程序中比较常见的就是二维数组。–定义二维数组时也需要遵循一定的语法规范,具体语法格式如下:–二维数组arr,它的第一维长度为3,第二维长度为4xx[1,0]xx[1,0]xx[1,1]xx[1,1]xx[2,0]xx[2,0]intxx[,]xx[0,0]xx[0,0]xx[0,1]xx[0,1]xx[0,2]xx[0,2]xx[0,3]xx[0,3]xx[1,2]xx[1,2]xx[1,3]xx[1,3]xx[2,1]xx[2,1]xx[2,2]xx[2,2]xx[2,3]xx[2,3]让IT教学更简单,让IT学习更有效3.3数组•3.3.3多维数组–在定义数组时,还可以直接对数组中的元素进行初始化。–上述代码是一种标准的初始化形式,也可以将其进行简化。–数组初始化成功后,可以通过索引的形式访问数组中的元素。让IT教学更简单,让IT学习更有效•统计二维数组每行的和以及所有数据的和让IT教学更简单,让IT学习更有效举例classMarray{staticvoidMain(){intsum=0;introwsum;int[,]marray=newint[2,4]{{2,2,2,2},{3,3,3,3}};for(introw=0;row2;row++){【1】【2】sum+=rowsum;Console.Write(={0},rowsum);Console.WriteLine();}Console.ReadLine();}}rowsum=0;for(intcol=0;col4;col++){rowsum+=marray[row,col];//统计每行和}让IT教学更简单,让IT学习更有效课堂练习•建立一个3行2列的二维数组,可通过键盘或初始化方式赋值,然后输出数组的最大值for(i=0;i3;i++)for(j=0;j3;j++)a[i,j]=int.Parse(Console.ReadLine());让IT教学更简单,让IT学习更有效•数组型的数组•int[][]a=newint[2][]a[0]=newint[3]{0,1,2};a[1]=newint[3]{3,4,5};int[][]a=newint[2][]{newint[]{1,2,3},newint[]{4,5,6}}让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效ComboBox下拉列表框提供了两个属性,分别是SelectedIndex和Items,其中

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功