




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
89第章 C#数组、结构和枚举声明一个变量可以存储一个值,当遇到要存储多个相同类型的值的时候,变量就显得无能为力,数组正是在这种存储需求下设计的一种数据结构;常量可用来存储一个固定值,但是要存储多个固定值的时候,常量也失效了,这时候就要借助于枚举来实现;而结构是用来表示更加复杂的值类型,在结构里,用户可以声明不同数据类型的变量作为一个整体。学完本章后,读者将了解数组、结构和枚举的用法。本章主要涉及到的知识点有:q 数组:理解数组的概念,并创建数组。q 使用数组:包括定位、遍历、查找、排序等典型操作。q 结构:在需要考虑运行效率、且几乎不做运算的数据应该作为结构定义。了解结构的用法。q 枚举:用于声明一组命名的常数。理解枚举的好处,并使用枚举。5.1 C#中的数组在日常生活中,人们用容器来存储物品,为了方便查找,总是将众多的物品分门别类地存储在不同的容器中。在计算机程序中,同样会遇到处理大量具有相同类型的数据的时候,C#语言提供了“数组”这一数据结构,用于处理这样的数据。5.1.1 声明和初始化一维数组【本节示例参考:源代码chapter55.1.1ArrayExample】数组类似于生活中的容器,可以将一组数据类型相同的数据按照一定的顺序存储起来,存储在数组中的数据又叫元素,可以通过“索引”,或叫“下标”的整数来区分数组中的元素。C# 支持一维数组、多维数组(矩形数组)和数组的数组(交错数组)。下面通过一个例子来学习一维数组。暑期到了,音像店的老板Landy整理了一个CD架位置,并买了5张碟片放在上面出租,分别是功夫熊猫、不可思议绿巨人、赤壁、木乃伊3、牛仔裤的夏天2,有客人来租碟的时候,就从相应的位置找到这张碟。如果把这个CD架理解为一个“数组”,它顺序存放的“元素”就是碟片。在程序中,可以用以下的语句声明一个数组:string movies;声明以后,需要让计算机内存分配指定大小的空间,这叫初始化数组,如下所示:movies = new string5;用new关键字创建一个数组,实际上是在请求分配内存空间。数组初始化成功后,就可以把元素存入数组,如下所示:movies0 = “功夫熊猫”;movies1 = “不可思议绿巨人”;movies2 = “赤壁”;movies3 = “木乃伊3”;movies4 = “牛仔裤的夏天2”;注意:紧跟数组名的数字,称之为“下标”或“索引”。同C语言和大部分语言一样,C#数组的下标是从0开始,而不是从1。如果要声明一个大小是的数组,其下标就是从。通过以上内容,完成了数组的声明和初始化工作。对于数组的声明和初始化,还可以用以下三种不同的方式简写。(1)方式一:string movies =new string5;计算机内存将分配5个连续的存储string类型的空间。因为字符串在C#中是引用类型,所以系统默认将每个元素初始化为NULL。如果是数值型数组,将默认初始化为0,例如:int numArr =new int 5; /每个元素默认值为0float strArr = new float5;/每个元素默认值为0object objArr = new object5;/每个元素默认值为NULL(2)方式二:string movies = new string “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”,”牛仔裤的夏天2”这里可以不用显式指定数组的大小,数组大小默认为初始化的元素个数。(3)方式三:如果在声明的时候就初始化,还可以简化为:string movies = “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”,”牛仔裤的夏天2”以上的数组定义方式都能达到相同的目的,在定义数组的时候,之前如果不知道数组的元素,应采用方式一。如果定义的时候就知道数组的元素,那么采取方式三会使程序更简洁。数组定义好以后,就可以通过循环来访问数组的每一个元素:for(int i=0;imovies.Length;i+)Console.WriteLine(movies0=1,i,moviesi);注意:这里用到了数组的公共属性Length,返回数组的大小,其用法是:数组.Length。5.1.2 声明和初始化其他类型的数组通过一维数组的方式,解决了Landy保存部分碟片的问题。但是Landy的烦恼是,随着碟片不断增多,查找碟片越来越难,如果能给每张碟片一个编号,编号表示碟片存放的位置在第几排第几列,这样会方便很多,每一张碟片的编号及其存储位置如图5.1所示。1112131415213141图5.1 碟片编号现在用程序来实现。编号是按照表格方式排列的,即是二维的,所以通过二维数组可以实现。二维数组的声明方式如下:1/方式一2int , numbers; /声明3numbers = new int , /初始化4 1,2,3,4,5,5 1,2,3,4,5,6 1,2,3,4,5,7 1,2,3,4,5,8 1,2,3,4,59; 10/方式二11int , numbers = new int , /声明并初始化12 1, 2, 3, 4, 5 , 13 1, 2, 3, 4, 5 , 14 1, 2, 3, 4, 5 , 15 1, 2, 3, 4, 5 , 16 1, 2, 3, 4, 5 17;声明的numbers数组可以存放5行列的元素,即numbers.Length = 25,要访问每个元素,可以通过下标,如numbers0,0 = 1。以此类推,还可以创建更多维的数组。此外,数组的元素可以是数组,即数组的数组(交错数组)。交错数组的声明方式如下:/方式一int jaggedArr = new int2 ;/声明交错数组jaggedArr0 = new int5; /声明交错数组的第一个元素为一个大小为5的整型数组jaggedArr1 = new int5;/方式二int jaggedArr = new int2 new int5, new int5;综合一下,列出创建数组的惯用语法,如下所述:q data_type arr_name = new data_typeint length,这种方式定义一个元素数据类型为data_type,长度为length的一维数组arr_name。q data_type arr_name = new data_type item1, item2, ,itemn,这种方式定义一个元素数据类型为data_type,并通过“=”运算符进行赋值,其初始值为所给出的元素item1, item2, ,itemn的个数的一维数组。q data_type, arr_name = new data_typeint length1,int length2,int lengthn,这种方式定义一个元素数据类型为data_type,秩为n,各维长度分别为length1,length2,lengthn的多维数组arr_name。q data_type arr_name = new data_typeint length1int length2,这种方式定义一个交错数组arr_name,与定义多维数组非常相似,所不同的是,必须单独初始化交错数组每一维中的元素。5.1.3 支持数组语言实现的基类:System.Array【本节示例参考:源代码chapter55.1.3ArrayClass】C#中的数组是由System.Array类派生而来的引用对象,它提供一些公共的属性和方法,对数组的操作提供了很大帮助。其常用的属性和方法如表5.1所示(更多的属性和方法请参考MSDN)。常用方法的使用会在以下章节中介绍。表5.1 Array类常用属性/方法说明属性/方法说明Length获得一个 32 位整数,表示 Array 的所有维数中元素的总数IsFixedSize返回一个布尔值,表示数组是否是固定大小的IsReadOnly返回一个布尔值,表示数组是否是只读的Rank获取 Array 的秩(维数),如二维数组numbers,numbers.Rank =2BinarySearch使用二进制搜索算法在一维的排序 Array 中搜索值Clone创建 Array 的浅表副本Copy/CopyTo将一个 Array 的一部分复制到另一个 Array 中GetLength获取一个 32 位整数,表示 Array 的指定维中的元素GetLowerBound/GetUpperBound获取 Array 的指定维度的下/上限GetValue/SetValue获取/设置 Array 中的指定元素值IndexOf/LastIndexOf返回一维 Array 或部分 Array 中某个值第一个/最后一个匹配项索引Sort对一维 Array 对象中的元素进行排序下面的代码演示了System.Array类的属性的用法。string movies = 功夫熊猫, 不可思议绿巨人, 赤壁, 木乃伊3, 牛仔裤的夏天2 ;Console.WriteLine(是否固定大小(IsFixedSize): +movies.IsFixedSize);Console.WriteLine(是否只读(IsReadOnly): + movies.IsReadOnly);Console.WriteLine(数组元素的总数(Length): + movies.Length);Console.WriteLine(数组的秩(Rank): + movies.Rank);Console.ReadLine();输出的结果如下所示:是否固定大小(IsFixedSize): True是否只读(IsReadOnly): False数组元素的总数(Length): 5数组的秩(Rank): 15.1.4 访问数组元素【本节示例参考:源代码chapter55.1.4VisitExample】 Landy的新碟到了以后,生意好了很多,每天都有很多人去租碟。通过每张碟的编号,从CD架上找到碟片。这就好比从数组中去访问每个元素一样。访问元素的方式很多,最直接的就是通过数组的下标。假如所有碟片都放在一排陈列架上,就要用一维数组,例如:定义一维数组:string movies = new string “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”,”牛仔裤的夏天2”获取第一个元素:movies0 =“功夫熊猫”。获取最后一个元素:movies4 = “牛仔裤的夏天2”。假如碟片分别放在多排CD架上每排可以放多张碟,则要用二级数组,定义二维数组:string , movies = new string , “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”这样创建的数组,表示CD在架上是这样摆放的,如图5.2所示。图5.2 CD架上的碟片获取第一个元素:movies0,0 = “功夫熊猫”。获取最后一个元素:movies1,1 = “木乃伊3”注意:如果引用的下标超出了数组的范围,会抛出System.IndexOutOfRangeException异常。还可以通过System.Array类的GetValue/SetValue方法访问数组元素。GetValue方法语法:public object GetValue(params int indices);,其中,多个int型参数indices的含义为下标。方法返回一个object对象,这是C#中所有对象的基类,使用多态性,它可以指向所有的C#对象,如下所示:1string movies = new string “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”,”钢铁侠”;2for(int i = 0; i movies.Length; i+)34Console.WriteLine(“碟片0 = 1”,i,movies.GetValue(i);5输出结果为:碟片0 = 功夫熊猫碟片1 = 不可思议绿巨人碟片2 = 赤壁碟片3 = 木乃伊3碟片4 = 钢铁侠SetValue方法语法为:public object SetValue(); 其作用是给指定下标的元素赋值,用法跟GetValue类似。1string movies = new string “功夫熊猫”,”不可思议绿巨人”,”赤壁”,”木乃伊3”,”钢铁侠”;2for(int i = movies.GetLowerBound(0); i= movies.GetUpperBound(0); i+)34movies.SetValue(蝙蝠侠,i);5Console.WriteLine(“碟片0 = 1”,i,movies.GetValue(i);6输出结果为:碟片0 = 蝙蝠侠碟片1 = 蝙蝠侠碟片2 = 蝙蝠侠碟片3 = 蝙蝠侠碟片4 = 蝙蝠侠注意:SetValue(object value,int index),表示将value 值赋给下标是index的元素;GetLowerBound方法可以获取数组某一维上的最低下标,而GetUpperBound则可获取其最高下标5.1.5 使用foreach语句遍历数组【本节示例参考:源代码chapter55.1.5ForeachExample】遍历是指全部访问数组中的元素一次且仅一次,可以在遍历的过程中完成查找等许多操作,需要注意一点:foreach循环对数组内容进行只读访问,所以不能改变任何元素的值。foreach语句格式如下:foreach (data_typt item_name in arr_name)/遍历每一个元素注意:无论是几维的数组,foreach语句都会从最深层的原子元素开始,遍历一次且仅一次,因此,不需要嵌套foreach循环。代码5-1实现二维数组的遍历和元素的处理:代码5-1 利用foreach遍历数组示例:ForeachExample.cs1/定义二维数组2int, numbers = new int, 3 1, 1, 1, 1, 1 ,4 2, 2, 2, 2, 2 ,5 3, 3, 3, 3, 3 ,6 4, 4, 4, 4, 4 , 7 5, 5, 5, 5, 5 8;9/遍历-输出定义变量 int num ,其数据类型跟numbers相同10int count = 0; /定义一个计数器11foreach (int num in numbers)1213 Console.Write(num + , );14 count+; /每输出一个元素,计数器加115 if (count = 5) /每输出5个元素16 17 Console.WriteLine(); /输出换行18 count = 0; /初始化计数器19 2021Console.ReadLine();输出结果:1, 1, 1, 1, 1,2, 2, 2, 2, 2,3, 3, 3, 3, 3,4, 4, 4, 4, 4,5, 5, 5, 5, 5,5.1.6 查找数组元素【本节示例参考:源代码chapter55.1.6SearchExample】数组的元素是有序的,每一个元素对应一个唯一下标,在程序设计中,经常需要查找某个元素是否存在,以及该元素所在的位置等操作。可以通过遍历整个数组的方式来查找,也可以通过System.Array提供的BinarySearch方法完成这些操作。有个客户需要租赤壁,Landy需要在CD架中找到片名叫赤壁的碟片,下面的例子演示了查找元素赤壁所在的位置的两种方法:1/定义数组2string movies = new string 功夫熊猫, 钢铁侠, 赤壁, 木乃伊3, 牛仔裤的夏天2 ;3/方法一:遍历,比较4 for (int i = 0; i movies.Length; i+)5 6 if (moviesi = 赤壁)7 8 Console.WriteLine(赤壁所在的位置是:0, i);9 10 11 /方法二:通过方法查找12 int index = System.Array.BinarySearch(movies, 赤壁);13 Console.WriteLine(赤壁所在的位置是:0, index);输出的结果:赤壁所在的位置是:2赤壁所在的位置是:2注意:BinarySearch方法的第一个参数是需要查找的数组,第二个参数表示需要查找的元素,如果找到,方法返回该元素所在数组中的下标,如果没找到,将返回一个负数。5.1.7 对数组进行排序【本节示例参考:源代码chapter55.1.7SortExample】生活中会经常遇到一些排序问题,比如把一个班的考试成绩排序,足球比赛积分排序等。那么怎样用计算机程序来完成排序工作呢?这个问题前人早就有深刻的研究,总结出了很多高效率的排序算法,下面就来看看怎样用C#语言实现经典的冒泡排序。在编写程序之前,先来了解一下冒泡排序算法原理。假设现有5个数:3,5,2,4,1,要将它们从小到大排序。冒泡排序的过程如图5.3所示。图5.3 冒泡排序流程图可以将每个元素比作一个气泡,排序的过程就是气泡不断向上冒的过程,越小的气泡冒得越高。代码5-2用程序实现冒泡排序的功能。代码5-2 使用冒泡排序示例: SortTest1.cs1/定义数组2int numbers = 3, 5, 2, 4, 1 ;3/输出排序前数组4Console.WriteLine(排序前的数组:);5for (int i = 0; i numbers.Length; i+)67 Console.Write(numbersi + , );一重循环89/开始排序10for (int i = 0; i numbers.Length - 1; i+)11 12 /将最大的元素交换到最后二重循环13 for (int j = 0; j numbersj + 1)16 17 /交换元素18 int tmp = numbersj;19 numbersj=numbersj+1;20 numbersj+1 =tmp;21 22 23 24/输出排序后数组25Console.WriteLine(n排序后的数组:);26for (int i = 0; i numbers.Length; i+)2728 Console.Write(numbersi + , );2930Console.ReadLine();输出结果:排序前的数组:3, 5, 2, 4, 1,排序后的数组:1, 2, 3, 4, 5,可以看到,对数组进行排序,是指按照一定的排序规则,如递增或递减规则,重新对数组中的所有元素排序。除了冒泡排序等算法实现外,C#提供了很好的排序支持,可以使用Array类的Sort方法轻松完成这个功能。代码5-3用程序实现冒泡排序。代码5-3 利用Sort排序数组示例: SortTest2.cs1/定义数组2int numbers = 3, 5, 2, 4, 1 ;3/输出排序前数组4Console.WriteLine(排序前的数组:);5for (int i = 0; i numbers.Length; i+)67 Console.Write(numbersi + , );8直接调用类的静态排序方法9/开始排序10System.Array.Sort(numbers);11/输出排序后数组12Console.WriteLine(n排序后的数组:);13for (int i = 0; i numbers.Length; i+)1415 Console.Write(numbersi + , );1617Console.ReadLine();该程序输出结果为:1, 1, 1, 1, 1,2, 2, 2, 2, 2,3, 3, 3, 3, 3,4, 4, 4, 4, 4,5, 5, 5, 5, 5,注意:语法public static void Sort(Array array);其中,参数array为待排序的数组。5.2 用C#中的结构来实现音像记录表C#是面向对象的语言,结构可视为轻量级的类,是创建用于存储少量数据的数据类型的理想选择,不能表示以后可能要通过继承进行扩展的类型。本章将通过讲解实现完善碟片编号的功能来向读者展示结构的用法。5.2.1 音像信息记录表程序实例【本节示例参考:源代码chapter55.2.1StructTest】通过数组一节,Landy完成了碟片的存储和给碟片编号的任务。现在Landy希望把所有的碟片记录在电子表格中,以方便查找。对电子表格的设计通常采用图5.4的形式。图5.4 碟片记录表每一条记录,要求存储碟片的编号,名称,以及出租状态。现在考虑如何用程序来实现:碟片的编号用整数类型来表示,名称用字符串类型来表示,而出租状态可能是个方法。显然用数组会有点力不从心,因为数组只能存储相同数据类型的数据。这里需要一个更好的类型支持,这就是结构。不管是用什么实现,下面迫不及待地想完成这张音像记录表的建立。在理解相对晦涩的概念之前,笔者手把手教你完成这个项目,然后再来研究结构的语法和细节。(1)选择“开始”“程序”“Microsoft Visual Studio 2008” “Microsoft Visual Studio 2008”命令,打开集成开发环境(IDE)。(2)在IDE中,选择“文件” “新建”“项目”命令,弹出对话框,选择对话框左边树结构中的“Visual C#”项,选择对话框右边的“控制台应用程序”选项,在项目名称中添加“StructTest”,指定项目保存路径,单击“确定”按钮,成功创建项目。修改默认的Program.cs为StructTest.cs,编写程序如代码5-4所示。代码5-4 结构程序示例: StructTest.cs1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;56namespace StructExample78 /声明结构类型结构体的定义,包括属性和方法9 public struct CDList10 11 public int no; /碟片编号12 public string name;/碟片名称13 public bool isRent;/是否出租14 public string Status()15 16 if (isRent)17 18 return 租出;19 20 else21 22 return 在库;23 24 25 26 /该类引用结构,并作初始化和输出27 class StructTest28 29 static void Main(string args)30 31 CDList cdList;/初始化结构类型32 cdList.no = 1;/设置编号33 cdL = 功夫熊猫;/设置名称34 cdList.isRent = true;/设置是否出租35 Console.WriteLine(编号: +cdList.no);36 Console.WriteLine(名称: + cdL);37 Console.WriteLine(状态: + cdList.Status();38 Console.ReadKey();39 40 41(3)运行程序,输出结果如图5.5所示。图5.5 碟片记录从结果可以看到,定义的结构CDList展示了一张碟片的编号、名称和状态,声明的结构变量cdList实现了一张碟片的信息记录,现在离成功不远了,接下来要实现的是多条记录的录入和输出。试想,一个结构变量可以表示一张碟片,那么多个结构变量不就可以表示多张碟片了么,这显然是可以的。当遇到这种重复的表示同类型数据的时候,自然就想到用数组来表示。代码5-5修改了代码5-4的Main()方法,实现了结构数组。代码5-5 结构程序示例: StructArrayTest.cs1static void Main(string args)23 CDList cdLists =new CDList5; /定义结构数组4 for (int i = 0; i cdLists.Length; i+) /给数组元素赋值5 6 Console.WriteLine(请输入第0条碟片信息:, i + 1);7 Console.Write(编号:);8 cdListsi.no = Convert.ToInt32(Console.ReadLine(); /接受编号的输入9 Console.Write(名称:);10 cdL = Console.ReadLine(); /接受名称的输入11 Console.Write(状态(false表示在库/true表示租出):);12 cdListsi.isRent = Convert.ToBoolean(Console.ReadLine(); /输入在库状态13 14 Console.WriteLine(n=碟片记录表=);15 Console.WriteLine(编号t名称tt状态);16 foreach (CDList cdList in cdLists) /遍历数组元素17 18 Console.Write(0t , cdList.no); /输出编号19 Console.Write(0tt , cdL); /输出名称20 Console.Write(0t , cdList.Status(); /输出状态21 Console.WriteLine();22 23输出结果如图5.6所示。图5.6 碟片记录表5.2.2 理解值类型的结构实践了上一节的例子以后,再来了解结构的概念,相信大家已经茅塞顿开了。定义结构的语法非常简单,以关键字struct打头,格式如下:struct 结构名属性,方法等结构是用户定义的值类型。与类相似,结构可以包含构造函数、常数、字段、方法、属性、索引器、运算符和嵌套类型(如上一节的例子,分别定义了no、name、isRent三个字段和一个Status方法)。在结构的声明中,属性是无法初始化的,除非声明为const或static,例如:public struct CDList public const float PI = 3.14f; public static string category=动画片;结构的方法可以是任意的,但结构不能声明默认构造函数(即跟结构同名的不带参数的函数)或析构函数。下面的程序声明了一个带参的构造函数,用于初始化属性,改写代码5-4中结构的定义,如下所示:1/改写定义结构类型2public struct CDList34 public int no; /碟片编号5 public string name; /碟片名称6 public bool isRent; /是否出租7 public CDList(int no, string name, bool isRent) /定义结构类型8 9 this.no = no; /初始化编号10 = name; /初始化名称11 this.isRent = isRent; /初始化出租状态12 13 public string Status() /定义属性14 15 if (isRent)16 17 return 租出;18 19 else20 21 return 在库;22 23 24声明了带参构造函数以后,可以通过默认构造函数声明结构变量,也可以通过带参构造函数直接声明并初始化结构变量。/声明结构变量CDList cd1 = new CDList();CDList cd2 = new CDList(3, 赤壁, true);注意:使用默认构造函数声明的结构变量,其数值型属性将默认初始化为0,字符串默认初始化为NULL,布尔型属性将默认初始化为False。学完第6章面向对象后,读者会发现C#的结构和类在使用上没有区别,唯一的区别是在内存里的储存方式。结构将会被执行库分配,存在堆栈上,而类将会被执行库分配,存储在引用托管堆中。也就是C#的结构是被执行库当作用户自定义的值类型对待的,而类是被当作引用类型对待。在需要访问快、且几乎不做运算的那些数据应该作为结构,而需要做很多运算的那些数据应该作为类来处理。.3 用C#枚举给音像分类问题总是伴随着项目的不断壮大而产生,这是软件不断升级的一个原因,为了在升级过程中不造成更大的困扰,程序员需要在开始软件设计的时候,充分地预感未来可能会发生的事情,并想办法及早地规避问题的发生。音像店碟片的不断增加,在成百上千的记录表中要找到一条信息,也是相当费时的,Landy需要对记录表进行优化。他需要对碟片按照下面方式分类:文艺片,战争片,喜剧片,爱情片,科幻片,按照这种方式给碟片分类,会更方便管理,对于大数据量的碟片管理会带来帮助。5.3.1 用枚举来给音像归类实例【本节示例参考:源代码chapter55.3.1EnumTest】继续重构音像记录表,把每一条记录加上一个类别属性,当有用户要租喜剧片的时候,就只需要把类别是喜剧片的分出来,在里面找到用户所需要的碟片,如图5.7所示。图5.7 碟片记录表怎样通过程序来实现上面的思路呢?因为碟片的类别数量是固定不变的,我们可以通过枚举的方式来便是类别。新建一个控制台应用程序,修改默认的Program.cs文件名为EnumTest.cs,并编写程序如代码5-6所示。代码5-6 结构程序示例:EnumTest .cs1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;56namespace EnumTest /定义命名空间78 /定义类别枚举9 public enum CDType:int10 定义一个整型枚举11 COMEDY =1, /喜剧片12 SCIENCE_FICTION=2, /科幻片13 ACTION =3, /动作片14 LOVE_STORY=4 /爱情片15 16 /定义结构体类型17 public struct CDList18 19 public int no; /碟片编号20 public int type; /碟片类型21 public string name; /碟片名称22 public bool isRent; /是否出租23 public string Status() /定义属性,说明出租状态24 25 if (isRent)26 27 return 租出;28 29 else30 31 return 在库;32 33 34 35 class EnumTest /定义一个测试类36 37 static void Main(string args)38 39 CDList cd1 = new CDList(); /创建一个结构体类型变量40 cd1.no = 1; /给变量赋值41 cd1.type = (int)CDType.COMEDY;42 = 功夫熊猫;43 cd1.isRent = true;4445 Console.WriteLine(=碟片信息=);46 Console.WriteLine(编号t类型t名称tt状态);47 Console.WriteLine(0t1t2t3,cd1.no,cd1.type,,cd1.Status();48 Console.ReadKey();49 50 51输出结果如图5.8所示。图5.8 碟片记录5.3.2 通过实例理解枚举的作用【本节示例参考:源代码C8Example_TraverseArray】程序中的任何一个概念,都是为了解决某类问题而来,枚举亦是如此。枚举可以理解为一组常数的集合,它很好地限定了这组常数的范围,供程序在任何需要的地方引用。枚举的定义以关键字enum来标示,语法如下:enum 枚举名枚举成员或者:访问修辞符 enum 枚举名:基础类型 枚举成员 什么时候需要用到枚举呢?例如星期1到星期7,从1月份到12月份,表示方向东、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人才日活动策划方案模板
- 东莞入企咨询方案
- 传媒艺考活动策划方案
- 水产养殖行业技术规范总结
- 软件著作权转让协议
- 2025结构工程师检测卷(历年真题)附答案详解
- 2025国家统一法律职业资格考试考试真题及答案
- 中考语文小说阅读赏练-梁晓声小说(含解析)
- 诚信与谎言话题作文(13篇)
- 2025计算机一级考前冲刺练习试题及完整答案详解(夺冠系列)
- 茶百道培训课件
- 2025至2030年中国制药装备行业市场全景分析及投资前景展望报告
- 2025北京京剧院招聘工作人员10人考试备考题库及答案解析
- 检修现场管理培训课件
- 2025年食品安全人员在线考试试题及答案
- 多重耐药菌感染患者的护理LP
- 信息网络安全考题「附答案」
- 2025年度国务院国资委干部教育培训中心招聘(2人)笔试备考试题及答案详解(历年真题)
- 2025司法协理员考试模拟题及答案
- 消防设备设施操作讲解培训课件P
- 2025年执业医师考试-中医师承及确有专长考核历年参考题库含答案解析(5卷单选一百题)
评论
0/150
提交评论