1、第第11章章 Visual C#程序设计基础程序设计基础本章知识点本章知识点pC#语言基础语言基础p数据类型数据类型p常量和变量常量和变量p运算符和表达式运算符和表达式p流程控制语句流程控制语句p类和对象类和对象11.1 C#语言基础语言基础p C#语言的基本特点语言的基本特点p.NET Framework和和C#p 使用使用Visual Studio 2005p 编写一个简单的编写一个简单的C#例子例子11.1.1 C#语言的基本特点语言的基本特点p C#的英文发音为的英文发音为C Sharp,它是一种最新的、面向对象,它是一种最新的、面向对象的程序设计语言,程序员可以使用它方便、快速地编的
2、程序设计语言,程序员可以使用它方便、快速地编写各种基于写各种基于Microsoft.NET平台的应用程序。平台的应用程序。p.NET将将Internet本身作为构建新一代操作系统的基础,本身作为构建新一代操作系统的基础,并对并对Internet和操作系统的设计思想进行了延伸,使开和操作系统的设计思想进行了延伸,使开发人员能够创建出与设备无关的应用程序,更容易地发人员能够创建出与设备无关的应用程序,更容易地实现实现Internet连接。连接。p 可以使用可以使用Visual Studio开发开发C#应用程序。应用程序。C#语言具有如下主要特点语言具有如下主要特点1语法简洁语法简洁2更完善的面向对
3、象程序设计机制更完善的面向对象程序设计机制3与与Web应用的紧密应用的紧密11.1.2 .NET Framework和和C#C#语言的编译和运行过程语言的编译和运行过程(1)在)在Visual Studio中创建中创建Visual C#项目,其中包括项目,其中包括C#源文件、资源和引用等。源文件、资源和引用等。C#源文件的扩展名为源文件的扩展名为.cs,可,可以定义类、接口、窗体等;资源可以是图像、图标、以定义类、接口、窗体等;资源可以是图像、图标、文本文件或字符串等;引用是文本文件或字符串等;引用是Microsoft公司或第公司或第3方提方提供的组件,通常为供的组件,通常为.dll、.ocx
4、和和.tlb等类型。等类型。(2)使用)使用C#编译器对编译器对Visual C#项目进行编译,得到项目进行编译,得到Microsoft中间语言(中间语言(MSIL),这是一组可以有效地转),这是一组可以有效地转换为本机代码且独立于换为本机代码且独立于CPU的指令。的指令。(3)Visual C#程序运行在程序运行在.NET Framework平台上,由平台上,由公共语言运行库提供支持,同时使用公共语言运行库提供支持,同时使用.NET Framework提供的类库,将提供的类库,将Microsoft中间语言转换为本地计算机中间语言转换为本地计算机代码,最终在操作系统上运行。代码,最终在操作系统
5、上运行。11.1.3 使用使用Visual Studio 2005p在在“开始开始”菜单中依次选择菜单中依次选择“程序程序”/“Microsoft Visual Studio 2005”/“Microsoft Visual Studio 2005”,启动,启动Microsoft Visual Studio 2005窗口。窗口。新建项目新建项目p 在最近打开的项目列表下面,提供了打开和创建网站的超级链接在最近打开的项目列表下面,提供了打开和创建网站的超级链接。单击。单击“创建创建”标签后面的标签后面的“项目项目”超级链接,打开超级链接,打开“新建项目新建项目”对话框。对话框。控制台应用程序项目控
6、制台应用程序项目Visual Studio窗口窗口1窗体设计及代码编辑器窗体设计及代码编辑器2解决方案资源管理器解决方案资源管理器3属性窗口属性窗口11.1.4 编写一个简单的编写一个简单的C#例子例子 参照参照11.1.3小节介绍的方法创建一个控制台应用程序项目,项目名小节介绍的方法创建一个控制台应用程序项目,项目名称为称为HelloWorld。项目的主文件为。项目的主文件为Program.cs。1Program.cs的默认代码的默认代码usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceHelloWor
7、ldclassProgramstaticvoidMain(stringargs)2在在Main()函数中添加代码函数中添加代码staticvoidMain(stringargs)Console.WriteLine(HelloWorld!);Console.ReadKey();3运行程序运行程序p 在菜单中选择在菜单中选择“调试调试”/“启动调试启动调试”,或在工具栏,或在工具栏中单击中单击“启动调试启动调试”按钮按钮 可以运行当前的项目。可以运行当前的项目。4在程序中添加注释在程序中添加注释(1 1)注释符)注释符/(2 2)注释符)注释符/*/(3 3)XMLXML文档注释标记文档注释标记(
8、1)注释符)注释符/文件名:文件名:Program.cs/描述:主程序文件描述:主程序文件/作者:启明星作者:启明星/日期:日期:2009-2-18inta=0;/声明一个整型变量声明一个整型变量a,初始值为,初始值为0(2)注释符)注释符/*/*文件名:文件名:Program.cs描述:主程序文件描述:主程序文件作者:启明星作者:启明星日期:日期:2009-2-18*/inta=0;/*声明一个整型变量声明一个整型变量a,初始值为,初始值为0*/intb/*变量变量b*/=0;(3)XML文档注释标记文档注释标记/classProgram/主函数主函数/命令行参数命令行参数staticvoi
9、dMain(stringargs)Console.WriteLine(HelloWorld!);/ab/cConsole.ReadKey();11.2 数据类型数据类型p 值类型值类型p 引用类型引用类型p 类型转换类型转换11.2.1 值类型值类型1 1简单类型简单类型2 2结构类型结构类型3 3枚举类型枚举类型1简单类型简单类型简单类型分类C#数据类型.NET Framework系统类型具体说明整数类型byteSystem.Byte无符号8位整数,取值范围为0255sbyteSystem.SByte有符号8位整数,取值范围为-128127ushortSystem.UInt16无符号16位整
10、数,取值范围为065,535shortSystem.Int16有符号16 位整数,取值范围为-32,76832,767uintSystem.UInt32无 符 号 3 2 位 整 数,取 值 范 围 为 0 4,294,967,295intSystem.Int32有 符 号 3 2 位 整 数,取 值 范 围 为-2,147,483,6482,147,483,647ulongSystem.UInt64无 符 号 6 4 位 整 数,取 值 范 围 为 0 18,446,744,073,709,551,615longSystem.Int64有 符 号 6 4 位 整 数,取 值 范 围 为-9,
11、223,372,036,854,775,8089,223,372,036,854,775,807实数类型floatSystem.Single32位浮点数据类型,也称为单精度数据类型,取值范围为1.5 10453.4 1038doubleSystem.Double64位浮点数据类型,也称为双精度数据类型,取值范围为5.0 103241.7 10308decimalSystem.Decimal128位数据类型,主要用于金融或货币方面的计算和处理,取值范围大致为1.0102 8 7.91028布尔类型boolSystem.Boolean布尔类型的变量只能存储布尔值true(真)和false(假)字符
12、类型charSystem.Char16位Unicode字符类型【例例11.1】pbytebyte数据类型的取值范围是数据类型的取值范围是02550255,下面程序将验证变量越界的情况。,下面程序将验证变量越界的情况。staticvoidMain(stringargs)bytea=255;Console.WriteLine(a);a+;Console.WriteLine(a);Console.ReadKey();p程序的运行结果如下:程序的运行结果如下:2550转义字符转义字符转义字符含义a警报(响铃)b退格符tTAB符r回车符v垂直TAB符f换页符n换行符eESC符反斜杠()2结构类型结构类型
13、structEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性别性别publicintWage;/工资工资publicstringIDCard;/身份证号身份证号使用结构体使用结构体p 可以通过下面的语句声明一个可以通过下面的语句声明一个Employee结构类型的变量结构类型的变量emp。Employeeemp;p 可以通过可以通过“emp.”方式来访问结构体内的变量。方式来访问结构体内的变量。例如,使用下面的语句可以为结构类型变量例如,使用下面的语句可以为结构类型变量emp设置具体的值。设置具体的值。emp.EmpName=小强小强;emp
14、.Sex=男男;emp.Wage=3000;emp.IDCard=1101234567890 xx;【例例11.2】p在在Employee结构类型中增加一个结构类型中增加一个Phone结构类型,用于定义员工的电话信息。结构类型,用于定义员工的电话信息。Phone结构类型包含结构类型包含3个成员个成员变量,即住宅电话变量,即住宅电话HomePhone、办公电话、办公电话OfficePhone和移动电话和移动电话MobilePhone,定义代码如下:,定义代码如下:structEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性别性别publici
15、ntWage;/工资工资publicstringIDCard;/身份证号身份证号publicstructPhonepublicstringHomePhone;/住宅电话住宅电话publicstringOfficePhone;/办公电话办公电话publicstringMobilePhone;/移动电话移动电话publicPhonephone;/定义电话变量定义电话变量p可以使用下面的语句来设置可以使用下面的语句来设置emp变量的住宅电话。变量的住宅电话。emp.phone.HomePhone=66668888;3枚举类型枚举类型p 枚举类型就是能够枚举出所有取值的类型。例如,一枚举类型就是能够枚
16、举出所有取值的类型。例如,一周有周有7天,可以定义一个枚举类型天,可以定义一个枚举类型Days,表示周,表示周1至周至周日,代码如下:日,代码如下:enumDaysSun,Mon,Tue,Wed,Thu,Fri,Sat使用枚举类型使用枚举类型p也可以手动指定枚举元素的值。例如,下面的代码中指定枚举元素也可以手动指定枚举元素的值。例如,下面的代码中指定枚举元素Sun的值为的值为1。enumDaysSun=1,Mon,Tue,Wed,Thu,Fri,Satp可以使用下面的方法来声明枚举类型的元素。可以使用下面的方法来声明枚举类型的元素。Daysweekdayp可以使用可以使用“.”的方式来引用枚举
17、类型的元素。例的方式来引用枚举类型的元素。例如,将变量如,将变量weekday赋值为周日,代码如下:赋值为周日,代码如下:weekday=Days.Sun;11.2.2 引用类型引用类型p 引用类型与值类型的最大区别在于,引用类型变量不直接存储所引用类型与值类型的最大区别在于,引用类型变量不直接存储所包含的值,而是指向它所要存储的值。也就是说,引用类型变量包含的值,而是指向它所要存储的值。也就是说,引用类型变量保存的是数据引用值的地址,这一点类似于保存的是数据引用值的地址,这一点类似于C语言中的指针。语言中的指针。p C#语言中包含的引用类型包括类(语言中包含的引用类型包括类(class)、数
18、组()、数组(array)、接口)、接口(interface)和委托()和委托(delegate)等。)等。1类类p 类是面向对象程序设计的基本单位,它既可以描述对象的属性,类是面向对象程序设计的基本单位,它既可以描述对象的属性,又可以定义对象的操作。又可以定义对象的操作。p 关于关于C#语言中定义和使用类的方法,将在语言中定义和使用类的方法,将在11.6小节详细介绍。这小节详细介绍。这里只介绍一个简单的定义类的实例。里只介绍一个简单的定义类的实例。【例例11.3】p声明类声明类Employee,用于定义员工的信息和操作,代码如下:,用于定义员工的信息和操作,代码如下:classEmploye
19、epublicstringEmpName;/姓名姓名publicstringSex;/性别性别publicintWage;/工资工资publicstringIDCard;/身份证号身份证号/输出员工信息输出员工信息/publicvoidPrintEmpInfo()Console.WriteLine(EmpName);Console.WriteLine(Sex);Console.WriteLine(Wage);Console.WriteLine(IDCard);2数组数组p 数组是包含若干相同数据类型变量的数据结构,它对应一段连续的数组是包含若干相同数据类型变量的数据结构,它对应一段连续的内存空
20、间。在定义数组时,需要指定数组名、数组元素的数据类型内存空间。在定义数组时,需要指定数组名、数组元素的数据类型和数组的维数等信息。和数组的维数等信息。p 数组可以是一维的,也可以是多维的。声明一维数组的语法如下:数组可以是一维的,也可以是多维的。声明一维数组的语法如下:=newp 关键字关键字new用于创建新的对象。例如,定义一个整型一维数组用于创建新的对象。例如,定义一个整型一维数组arr,它包含它包含5个数组元素,代码如下:个数组元素,代码如下:intarr=newint5;使用数组使用数组p在声明数组对象时,可以直接对其进行初始化,例如:在声明数组对象时,可以直接对其进行初始化,例如:i
21、ntarr=newint51,2,3,4,5;p使用下面的语句可以设置和返回数组元素的值。使用下面的语句可以设置和返回数组元素的值。arr0=2;inta=arr2;p在在C#语言中可以声明多维数组。例如,下面的语句声明了一个语言中可以声明多维数组。例如,下面的语句声明了一个5行行2列的二维整型列的二维整型数组。数组。int,array=newint5,2;p多维数组的使用方法与一维数组类似,也可以在声明数组时定义其初始值。例如多维数组的使用方法与一维数组类似,也可以在声明数组时定义其初始值。例如:int,array=newint,1,2,2,2,3,3,4,2,5,3;3接口接口【例例11.
22、4】在绘制图形时,都可以指定绘图使用的颜色(在绘制图形时,都可以指定绘图使用的颜色(Color属性),也需要包含一属性),也需要包含一个绘制动作(个绘制动作(Draw方法)。因此,可以定义一个接口方法)。因此,可以定义一个接口ISharp,包含所有绘图类所,包含所有绘图类所包含的包含的Color属性和属性和Draw方法,代码如下:方法,代码如下:ppublicinterfaceISharppp/p/绘制图形的颜色绘制图形的颜色p/pSystem.Drawing.ColorColorget;set;p/p/绘制图形绘制图形p/pvoidDraw();pp4委托委托p 委托(委托(delegate
23、)相当于)相当于C+中的函数指针,但是委托是类型安全中的函数指针,但是委托是类型安全和可靠的,它避免了和可靠的,它避免了C+中由于没有释放指针而导致的资源泄露中由于没有释放指针而导致的资源泄露现象,也不会因为指针指向不正确的地址而产生异常。现象,也不会因为指针指向不正确的地址而产生异常。p 可以使用关键字可以使用关键字delegate来定义委托。例如,定义一个指向来定义委托。例如,定义一个指向void类类型函数的委托,代码如下:型函数的委托,代码如下:delegatevoidMyDelegate();p 委托本身没有意义,在没有指向具体的方法前也不能被独立执行委托本身没有意义,在没有指向具体的
24、方法前也不能被独立执行。需要首先定义一个方法,然后将委托指向该方法,才能通过委。需要首先定义一个方法,然后将委托指向该方法,才能通过委托调用方法。托调用方法。【例【例11.5】classProgram/定义委托定义委托MyDelegatedelegatevoidMyDelegate();/主函数主函数staticvoidMain(stringargs)/将委托对象将委托对象d指向指向PrintHello()方法方法MyDelegated=newMyDelegate(PrintHello);/相当于执行相当于执行PrintHello()方法方法d();/将委托对象将委托对象d指向指向PrintA
25、BC()方法方法d=newMyDelegate(PrintABC);/相当于执行者相当于执行者PrintABC()方法方法d();/等待用户按任意键退出等待用户按任意键退出Console.ReadKey();【例【例11.5】/打印打印HelloWorld的方法的方法publicstaticvoidPrintHello()Console.WriteLine(HelloWorld);/打印打印ABC的方法的方法publicstaticvoidPrintABC()Console.WriteLine(ABC);5内置引用类型内置引用类型(1)object类型类型(2)string类型类型(1)obj
26、ect类型类型p 可以将值类型赋给可以将值类型赋给object类型的变量,此过程被称为类型的变量,此过程被称为“装箱装箱”。例。例如,下面的代码将整型变量如,下面的代码将整型变量i的值赋到的值赋到object变量中。变量中。inti=10;objectobj=i;p 装箱的反向操作为装箱的反向操作为“取消装箱取消装箱”,即将,即将object变量中的值赋到一个变量中的值赋到一个值类型变量中。例如,下面的代码将值类型变量中。例如,下面的代码将object变量变量i的值赋到的值赋到float变变量中。量中。intj=(int)obj;(2)string类型类型p string类型变量的声明方式如下
27、:类型变量的声明方式如下:string=;例如例如,下面的语句中定义了一个下面的语句中定义了一个string类型变量类型变量str,其初,其初始值为始值为hello。stringstr=hello;11.2.3 类型转换类型转换1隐式转换隐式转换隐式类型转换是系统默认的转换方式,可以直接通过赋值的方式实现隐式类型转换。隐式类型转换是系统默认的转换方式,可以直接通过赋值的方式实现隐式类型转换。例如:例如:inta=10;longb=a;在上面的代码中,在上面的代码中,int类型变量类型变量a的初始值为的初始值为10,将其赋值给,将其赋值给long类型变量类型变量b,则,则b的值的值也等于也等于1
28、0。2显式转换显式转换显式类型转换也称为强制类型转换,它需要在进行类型转换时明确指定要转换的类型显式类型转换也称为强制类型转换,它需要在进行类型转换时明确指定要转换的类型。例如:。例如:inta=10;longb=(int)a;11.3 常量和变量常量和变量p常量常量p变量变量11.3.1 常量常量p 在在C#语言中,可以使用语言中,可以使用const关键字来声明常量,语法如下:关键字来声明常量,语法如下:const=;1public访问修饰符访问修饰符2private访问修饰符访问修饰符3protected访问修饰符访问修饰符4internal访问修饰符访问修饰符publicconstflo
29、atPI=3.1415926;11.3.2 变量变量p 在在C#语言中,声明声明变量的语法如下:语言中,声明声明变量的语法如下:;p 在前面的内容中已经介绍了一些声明变量的实例,例如声明在前面的内容中已经介绍了一些声明变量的实例,例如声明int类型的变量类型的变量i,代码如下:,代码如下:inti;p 在声明变量的同时,可以设置变量的初始值。例如,声明在声明变量的同时,可以设置变量的初始值。例如,声明int类型变量类型变量a,其初始值为其初始值为10,代码如下:,代码如下:inta=10;C#变量的命名规则变量的命名规则p 变量名必须以字母或下划线等特定符号开头。变量名必须以字母或下划线等特定
30、符号开头。p 变量名只能由字母、数字和下划线组成,不能包含空格、标点符号、运变量名只能由字母、数字和下划线组成,不能包含空格、标点符号、运算符等。算符等。p 变量名不能与变量名不能与C#的库函数名相同。的库函数名相同。p 变量名不能与变量名不能与C#的关键字相同。的关键字相同。例如,下面声明的变量是合法的。例如,下面声明的变量是合法的。inta=10;int_a=1;stringstr;floatf;11.4 运算符和表达式运算符和表达式p 算术运算符和算术表达式算术运算符和算术表达式p 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式p 递增递减运算符和递增递减表达式递增递减运算符和递增递减表达
31、式p 关系运算符和关系表达式关系运算符和关系表达式p 赋值运算符和赋值表达式赋值运算符和赋值表达式11.4.1 算术运算符和算术表达式算术运算符和算术表达式【例【例11.6】p下面代码演示算术表达式的计算方法。下面代码演示算术表达式的计算方法。staticvoidMain(stringargs)inti=10,j=30,k=50;/优先计算优先计算j*kintnum=i+j*k;Console.WriteLine(10+30*50=0,num);/优先计算括号里面的内容优先计算括号里面的内容num=(i+j)*k;Console.WriteLine(10+30)*50=0,num);/按任意键
32、退出按任意键退出Console.ReadKey();p运行结果如下:运行结果如下:10+30*50=1510;(10+30)*50=2000;11.4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式11.4.3 递增递减运算符和递增递减运算符和递增递减表达式递增递减表达式p 递增运算符为递增运算符为+,用于将操作数增加,用于将操作数增加1。递增运算符可。递增运算符可以出现在操作数的前面,也可以出现在操作数的后面以出现在操作数的前面,也可以出现在操作数的后面。p 当递增运算符出现在操作数前面时,程序将首先将操当递增运算符出现在操作数前面时,程序将首先将操作数增加作数增加1,然后再将增加,然后再
33、将增加1后的结果作为表达式的返后的结果作为表达式的返回值。回值。【例【例11.7】p下面代码演示递增运算符出现在操作数前面时的情况。下面代码演示递增运算符出现在操作数前面时的情况。inti=10;intj=+i;Console.WriteLine(i=+i.ToString();Console.WriteLine(j=+j.ToString();p运行结果如下:运行结果如下:i=11;j=11;【例【例11.8】p 下面代码演示递增运算符出现在操作数后面时的情况下面代码演示递增运算符出现在操作数后面时的情况。inti=10;intj=i+;Console.WriteLine(i=+i.ToSt
34、ring();Console.WriteLine(j=+j.ToString();p 运行结果如下:运行结果如下:i=11;j=10;11.4.4 关系运算符和关系表达式关系运算符和关系表达式【例【例11.9】p 面代码演示关系表达式和逻辑表达式结合使用的计算结果。面代码演示关系表达式和逻辑表达式结合使用的计算结果。inti=50;Console.WriteLine(i30&i60);Console.ReadKey();11.4.5 赋值运算符和赋值表达式赋值运算符和赋值表达式【例【例11.10】p下面代码演示了各种赋值表达式的计算方法。下面代码演示了各种赋值表达式的计算方法。staticvo
35、idMain(stringargs)inti=10,j=3;Console.WriteLine(i=10;j=3);/=运算符运算符intnum=i+j;Console.WriteLine(i+j=0,num);/+=运算符运算符num=i;num+=j;Console.WriteLine(i+j=0,num);【例【例11.10】/-=运算符运算符num=i;num-=j;Console.WriteLine(i-j=0,num);/*=运算符运算符num=i;num*=j;Console.WriteLine(i*j=0,num);/=运算符运算符num=i;num/=j;Console.Wr
36、iteLine(i/j=0,num);/=运算符运算符num=i;num%=j;Console.WriteLine(i%j=0,num);Console.ReadKey();【例【例11.10】p运行结果如下:运行结果如下:i=10;j=3i+j=13i+j=13i-j=7i*j=30i/j=3i%j=111.5 流程控制语句流程控制语句p 选择控制语句选择控制语句p 循环控制语句循环控制语句p 跳转控制语句跳转控制语句p 异常处理语句异常处理语句11.5.1 选择控制语句选择控制语句(1)if语句语句(2)switch语句语句(1)if语句语句pif语句的语法如下:语句的语法如下:if()e
37、lse【例【例11.10】p 下面代码演示了下面代码演示了if语句的使用方法。语句的使用方法。staticvoidMain(stringargs)Console.WriteLine(请输入你的姓名:请输入你的姓名:);stringstr=Console.ReadLine();if(str.Length0)Console.WriteLine(您的姓名是:您的姓名是:0,str);elseConsole.WriteLine(没有输入没有输入);Console.ReadKey();else if语句语句if()elseif()else【例【例11.11】p下面代码演示了使用下面代码演示了使用if语句
38、实现多分支控制的方法。语句实现多分支控制的方法。ppstaticvoidMain(stringargs)ppDateTimenow=DateTime.Now;pif(now.DayOfWeek=DayOfWeek.Monday)pConsole.WriteLine(星期一星期一);pelseif(now.DayOfWeek=DayOfWeek.Tuesday)pConsole.WriteLine(星期二星期二);pelseif(now.DayOfWeek=DayOfWeek.Wednesday)pConsole.WriteLine(星期三星期三);pelseif(now.DayOfWeek=D
39、ayOfWeek.Thursday)pConsole.WriteLine(星期四星期四);pelseif(now.DayOfWeek=DayOfWeek.Friday)pConsole.WriteLine(星期五星期五);pelseif(now.DayOfWeek=DayOfWeek.Saturday)pConsole.WriteLine(星期六星期六);pelsepConsole.WriteLine(星期日星期日);p枚举类型枚举类型DayOfWeek的值的值(2)switch语句语句pswitch语句是一个多分支控制语句,语法如下:语句是一个多分支控制语句,语法如下:switch()cas
40、e:break;case:break;default:break;【例【例11.12】p使用使用switch语句输出当前日期是星期几,代码如下:语句输出当前日期是星期几,代码如下:staticvoidMain(stringargs)DateTimenow=DateTime.Now;switch(now.DayOfWeek)caseDayOfWeek.Monday:Console.WriteLine(星期一星期一);break;caseDayOfWeek.Tuesday:Console.WriteLine(星期二星期二);break;caseDayOfWeek.Wednesday:Console
41、.WriteLine(星期三星期三);break;【例【例11.12】caseDayOfWeek.Thursday:Console.WriteLine(星期四星期四);break;caseDayOfWeek.Friday:Console.WriteLine(星期五星期五);break;caseDayOfWeek.Saturday:Console.WriteLine(星期六星期六);break;default:Console.WriteLine(星期日星期日);break;【例【例11.13】p使用使用switch语句判断当前日期是工作日还是周末,代码如下:语句判断当前日期是工作日还是周末,代码
42、如下:staticvoidMain(stringargs)DateTimenow=DateTime.Now;switch(now.DayOfWeek)caseDayOfWeek.Monday:caseDayOfWeek.Tuesday:caseDayOfWeek.Wednesday:caseDayOfWeek.Thursday:caseDayOfWeek.Friday:Console.WriteLine(工作日工作日);break;default:Console.WriteLine(周末周末);break;11.5.2 循环控制语句循环控制语句(1)dowhile语句语句(2)while语句语
43、句(3)for语句语句(4)foreach语句语句(1)dowhile语句语句p dowhile语句的语法如下:语句的语法如下:dowhile()【例【例11.14】p使用使用dowhile语句计算语句计算1+2+3+9的结果,代码如下:的结果,代码如下:staticvoidMain(stringargs)inti=1;intsum=0;dosum+=i+;while(i11);Console.WriteLine(sum.ToString();Console.ReadKey();p运行结果为运行结果为55。(2)while语句语句pwhile语句的语法如下:语句的语法如下:while()【例【
44、例11.15】p使用使用while语句计算语句计算1+2+3+9的结果,代码如下:的结果,代码如下:staticvoidMain(stringargs)intn=1;intsum=0;while(true)sum+=n+;if(n10)break;Console.WriteLine(sum.ToString();Console.ReadKey();(3)for语句语句pfor语句的语法如下:语句的语法如下:for(;)p在在for语句中,需要定义一个循环控制变量,用来控制循环语句的执行。例如:语句中,需要定义一个循环控制变量,用来控制循环语句的执行。例如:for(inti=0;i10;i+)C
45、onsole.WriteLine(i.ToString();【例【例11.16】p 使用使用for语句输出数组语句输出数组arr所有元素的值,代码如下:所有元素的值,代码如下:staticvoidMain(stringargs)intarr=newint51,2,3,4,5;for(inti=0;iarr.Length;i+)Console.WriteLine(arr0=1,i,arri);Console.ReadKey();【例【例11.16】p输出结果如下:输出结果如下:arr0=1arr1=2arr2=3arr3=4arr4=5(4)foreach语句语句p foreach语句可以在循环
46、语句块中依次处理数组或对象语句可以在循环语句块中依次处理数组或对象集合中的每个元素,语法如下:集合中的每个元素,语法如下:for(in)【例【例11.17】p 使用使用foreach语句输出数组语句输出数组arr所有元素的值,代码如下:所有元素的值,代码如下:staticvoidMain(stringargs)intarr=newint51,2,3,4,5;foreach(intelementinarr)Console.WriteLine(element);Console.ReadKey();【例【例11.17】p输出结果如下:输出结果如下:1234511.5.3 跳转控制语句跳转控制语句(1
47、)break语句语句(2)continue语句语句(1)break语句语句pbreak语句用于退出当前的循环体或语句用于退出当前的循环体或switch语句。在介绍语句。在介绍switch语句时已经演语句时已经演示了示了break语句的使用,下面介绍在循环语句的使用,下面介绍在循环控制语句中使用控制语句中使用break语句的方法。语句的方法。【例【例11.18】p在数组在数组arr中查找等于中查找等于10的元素,找到后退出循环,并输出该元素在数组中的序号,代码如下的元素,找到后退出循环,并输出该元素在数组中的序号,代码如下:staticvoidMain(stringargs)intarr=new
48、int51,21,10,43,25;intindex=-1;for(inti=0;i=0)Console.WriteLine(等于等于10的数组索引为的数组索引为0,index);elseConsole.WriteLine(没有找到等于没有找到等于10的数组元素。的数组元素。);Console.ReadKey();(2)continue语句语句pcontinue语句用于将程序的控制权转向循语句用于将程序的控制权转向循环语句的下一次循环操作。环语句的下一次循环操作。【例【例11.19】p 遍历数组遍历数组arr中的元素,输出其中的偶数,代码如下:中的元素,输出其中的偶数,代码如下:staticv
49、oidMain(stringargs)intarr=newint51,21,10,44,25;intindex=-1;for(inti=0;iarr.Length;i+)if(arri%2=1)continue;Console.WriteLine(arri);Console.ReadKey();11.5.4 异常处理语句异常处理语句p C#的异常处理语句的异常处理语句trycatch,语法如下:,语法如下:trycatch()【例【例11.20】p 下面的实例演示当发生除下面的实例演示当发生除0错误时不进行异常处理的情况。错误时不进行异常处理的情况。staticvoidMain(stringa
50、rgs)inti=10;intresult=30/(i-10);Console.WriteLine(result);未处理异常未处理异常【例【例11.21】p下面的实例演示当发生除下面的实例演示当发生除0错误时进行异常处理的情况。错误时进行异常处理的情况。staticvoidMain(stringargs)tryinti=10;intresult=30/(i-10);Console.WriteLine(result);catch(Exceptionex)Console.WriteLine(ex.Message);Console.ReadKey();【例【例11.22】p下面的实例演示下面的实例