第五章_变量的更多内容_复杂的变量类型.ppt_第1页
第五章_变量的更多内容_复杂的变量类型.ppt_第2页
第五章_变量的更多内容_复杂的变量类型.ppt_第3页
第五章_变量的更多内容_复杂的变量类型.ppt_第4页
第五章_变量的更多内容_复杂的变量类型.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 变量的更多内容,复杂的变量类型,复杂的变量类型,C# 中有三种略微复杂的变量类型,它们分别是: 枚举类型 结构类型 数组类型,枚举类型,什么是枚举: 枚举类型是整数类型的子集,并可定义枚举类型中可以使用的值,就好像整数可以取1、2、3.N这些值一样,枚举就是用来说明枚举类型中可以使用的值,例如,当我们需要表示星期时,我们知道星期只能是星期一至星期日之间的值,而其它值无效,因此可以使用枚举定义一个代表星期的枚举类型,并规定它只能取“星期一至星期日”之间的值,如:,enum Days Sat, Sun, Mon, Tue, Wed, Thu, Fri enum byte 0, 1, 2,

2、3, 4, 5, 6, 7, 8, 9, 10.255 ,枚举类型,枚举的定义方法:,enum 枚举类型名 枚举值1, 枚举值2, 枚举值2, . 枚举值N ,枚举类型名 变量名 = 枚举类型名.枚举值;,枚举类型,枚举的使用方法: 枚举类型一旦定义,就能像声明普通变量一样声明枚举型变量,如:,enum Days Sat, Sun, Mon, Tue, Wed, Thu, Fri class Program static void Main(string args) Days today = Days.Fri; Console.WriteLine(“Today is 0”, today); ,

3、枚举类型,枚举的基类型:,enum Orientation North, South, East = 5, West = South ,由于枚举是整数的子集,我们就可以为每个枚举指定枚举值,默认情况下将以递增的顺序为每个枚举指定一个数值,也可以手动指定枚举所对应的数值,或者指定为前面的某个枚举值。例如:,其中,North为0,South为1,East为指定值5,West将为上一枚举值加一,即6,而West为1。,枚举类型,枚举的基类型:,enum Orientation : byte North, South, East, West ,枚举类型是整数类型的子集,所以枚举值也是整数类型的,在默认

4、情况下,枚举值的基类型是 int,可通过以下方法更改枚举值的基类型。,enum : ,枚举类型,枚举类型的转换:,static void Main(string args) Days today = Days.Sat; int intToday = (int) today; int intTomorrow = (int) Days.Sun; Console.WriteLine( “Today int val is 0, Tomorrow int val is 1”, intToday, intTomorrow ); ,因为枚举值的基类型是整数类型,所以可以很容易的把枚举类型显式转换成整数类型,

5、如:,Today int val is 0, Tomorrow int val is 1,枚举类型,枚举类型的转换:,static void Main(string args) Days today = (Days) 0; Days tomorrow = today + 1; Console.WriteLine( “Today is 0, Tomorrow is 1”, today, tomorrow ); ,反过来,我们同样可以把数值类型转换为枚举类型,例如:,Today is Sat, Tomorrow Sun,枚举类型,枚举类型的转换:,static void Main(string a

6、rgs) Days today = (Days) Enum.Parse(typeof(Days), “Sat”); Console.WriteLine(“Today is 0”, today); ,还可以把枚举值的名字转换成枚举值,方法是使用.NET框架类库中的Enum类的Parse方法,例如:,Today is Sat,结构类型,什么是结构: 结构是用来将多种不同类型的变量组合在一起以形成一种新的类型,并可以很方便的加以访问。就比如当我们需要表示日期时,我们无法在一个变量中存储日期的所有数据,这时我们就可以使用结构来定义日期这种新的类型了,如:,struct Date public usho

7、rt Year; public byte Month, Day; public Days Week; ,结构类型,结构类型的定义方法:,struct 结构类型名 类型名 成员名1; 类型名 成员名2; 类型名 成员名3; . 类型名 成员名N; ,结构类型名 结构变量名; 结构变量名.成员名 = 数据;,结构类型,结构类型的使用示例:,struct Date public ushort Year; public byte Month, Day; public Days Week; class Program static void Main(string args) Date today; t

8、oday.Year = 2006; today.Month = 8; today.Day = 25; today.Week = Days.Fri; Console.WriteLine( “Today is 0/1/2 3”, today.Year, today.Month, today.Day, today.Week );,数组类型,什么是数组: 数组是相同类型数据的集合,当有大批同类数据需要处理时,使用数组将非常方便。 C# 中有两种类型的数组,分别是: 一维数组 多维数组(矩形数组) 交错型数组,一维数组,一维数组,一维数组是内存中的一块连的存储区域,可通过下标的形式进行访问:,一维数组,

9、一维数组的定义,类型名 数组名; 类型名 数组名 = 初始值列表 ; 类型名 数组名 = new 类型名 数组大小 ; 类型名 数组名 = new 类型名 数组大小 初始值列表 ;,一维数组类似于 C 语言中的一维数组,但定义方式有所不同:,int nullArray; int intArray = new int 10 ; double mathConsts = 3.14, 2.71828, 1.414 ; Days holiday = new Days 2 Days.Sat, Days.Sun ;,一维数组,一维数组的使用示例(1),static void Main(string args

10、) int intArray = new int3; intArray0= 1; intArray1= 3; intArray2= 5; for (int i=0; iintArray.Length; i+) Console.WriteLine( “intArray0 = 1”, i, intArrayi ); ,在 C# 中,一维数组的元数个数是与数组绑定在一起的,可通过 .Length 的形式来获取数组的元素个数,方便对数组进行遍历。,一维数组,一维数组的使用示例(2),static void Main(string args) Days holidays = Days.Sat, Days

11、.Sun ; Console.WriteLine(“Holidays is: “); for (int i=0; iholidays.Length; i+) Console.WriteLine(holidaysi); ,可以在 C# 中定义任意类型的数组,当然也包括自定义类型,如枚举类型和结构类型,以及后面要讲到的类类型。,一维数组,foreach 循环,foreach (数组类型 变量名 in 数组) / 变量是数组中每个元素的值 ,foreach 循环可用来对数组进行遍历,并可简化对数组的访问。是 for 循环的转化形式:,for (int i=0; i数组名.Length; i+) /

12、在这里使用数组名i来遍历数组 ,等价,一维数组,foreach 循环使用示例,int intArray = 1, 2, 3, 4 ; foreach (int element in intArray) Console.WriteLine(element); ,int intArray = 1, 2, 3, 4 ; for (int i=0; iintArray.Length; i+) Console.WriteLine(intArrayi); ,等价,二维数组,二维数组,在某些场合,一维数组已不能满足应用的需要了,当需要记录一张表格中的数据时,使用一维数组将很不方便,如需要记录下一张课程表中的

13、数据:,二维数组,二维数组,如果使用一维数组的话,用起来将会非常麻烦:,static void Main(string args) string timetable = , C# 程序设计, , / 星期一 , C# 程序设计, , / 星期二 C# 程序设计, SQL 数据库, , / 星期三 SQL 数据库, C# 程序设计, , / 星期四 , C# 程序设计, SQL 数据库 / 星期五 Console.WriteLine( “星期五上午34节果是0课”, timetable 4 * 3 + 1 / 课程等于 星期 每天课数 + 课时 ); ,二维数组,二维数组,二维数组就像一张二维表

14、格,同样有行列之分,实际上是多个一维数组的组合:,二维数组的访问顺序为,首先通过第一个下标来定位一维子数组,而后用第二个下标进行最终元素的定位。,二维数组,二维数组的定义,类型名, 数组名; 类型名, 数组名 = 初始值列表 ; 类型名, 数组名 = new 类型名 行, 列 ; 类型名, 数组名 = new 类型名 行, 列 初始值列表 ;,二维数组的定义方式与 C 语言完全不同,它是使用,号的方式进行多维数组的定义的。,int, intArray = new int 10, 20 ; double 2, 3 mathConsts = 3.14, 2.71828, 1.414 , 0.5,

15、0.25, 0.125 ; Days, workDays = new Days 2, 2 Days.Mon, Days.Wed , Days.Tue, Days.Thu ;,二维数组,二维数组的使用示例(1),static void Main(string args) int, intArray = new int2, 3 1, 3, 5 , 2, 4, 6 for (int i=0; i2; i+) for (int j=0; j3; j+) Console.WriteLine( “intArray0, 1 = 2”, i, j, intArray i, j ); ,无法直接得到多维数组每一

16、维的元数个数,使用.Length只能得到数组的总元素个数,但可以使用foreach 循环对多维数组进行遍历。,二维数组,二维数组的使用示例(2),static void Main(string args) int, intArray = new int2, 3 1, 3, 5 , 2, 4, 6 foreach (int element in intArray) Console.WriteLine(element); ,二维数组,课表程序示例,string, timetable = new string5,3 , C# 程序设计, , / 星期一 , C# 程序设计, , / 星期二 C# 程

17、序设计, SQL 数据库, , / 星期三 SQL 数据库, C# 程序设计, , / 星期四 , C# 程序设计, SQL 数据库 / 星期五 ; Console.WriteLine( 星期五上午34节果是0课, timetable4,1 );,多维数组,多维数组,同样的原理,N维数组就是把多个N-1维数组组合起来而形成的,如三维数组就是由多个二维数组组合而成的:,三维数组,多维数组,多维数组的定义,类型名 一维数组名; 类型名, 二维数组名 = 初始值列表 ; 类型名, 三维数组名 = new 类型名 元素个数,元素个数,元素个数 ; 类型名, 四维数组名 = 初始值列表 ; / 依次类推

18、,多维数组的定义方式是,根据数组的维数使用适当数量的,号来定义数组。,交错型数组,交错型数组,交错型数组又称为“数组的数组”,意为定义这样的数组,该数组的每个元素又是一个数组,并且可以一直这样嵌套的定义下去,并允许子数组的元素数目不相同。,数组的数组,子数组 1,子数组 2,子数组 3,子数组 4,子数组 1,元素 1,元素 2,子数组 2,元素 1,元素 2,元素 3,元素 4,子数组 3,元素 1,元素 2,元素 3,交错型数组,交错型数组的定义,类型名 数组名 = new 类型名 大小 ; 类型名 数组名 = new 类型名 大小 new 类型名 大小 , new 类型名 初始值列表 ,

19、 new 类型名 大小 初始值列表 , . ; 类型名 数组名 = new 类型名 new 类型名 大小 , new 类型名 初始值列表 ; 类型名 数组名 = new 类型名 new 类型名 new 类型名 大小 , new 类型名 初始值列表 , new 类型名 大小 new 类型名 大小 . , new 类型名 大小 ;,交错型数组,交错型数组的定义,int intArray = new int 10 ; int int2Array = new int 3 new int 5 , new int 1, 3, 5 , new int 2 2, 4 , ; int int2Array2 = new int new int 3 , new int 1, 3, 5, 7, 9 ; int int3Array = new int new int new int 10 , new int 1, 3 , new int2 new int 2 1, 2 , new int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论