《C#数据库编程技术课件汇总全书电子教案完整版课件(最新).ppt》由会员分享,可在线阅读,更多相关《C#数据库编程技术课件汇总全书电子教案完整版课件(最新).ppt(542页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第1章章 C#概述概述第1章C#概述1.1Microsoft.NET平台概述1.2C#语言简介1.3VisualStudio集成开发环境1.4C#程序结构介绍1.5简单的程序调试过程第第1章章 C#概述概述 1.1 Microsoft.NET平台概述平台概述1.1Microsoft.NET平台概述lMicrosoft.NET平台是由微软公司开发的软件开发系统平台,包括各种优秀的编程语言和其他技术,是一种主要用于Windows操作系统的托管代码编程模型。l在.NET平台中,提供了大量的公共类库,包括了VisualC#、VisualC+.NET、VisualJ#、VisualBasic.NET
2、等技术,配合微软公司推出的VisualStudio系列产品,深受广大开发人员的青睐,是当前程序开发人员的首选技术之一。1.1Microsoft.NET平台概述lMicrosoft.NET框架是微软公司在21世纪初开发的致力于敏捷而快速的软件开发框架,其更加注重平台无关化和网络透明化。lMicrosoft.NET框架既是一个灵活、稳定的能运行服务器端程序、富互联网应用、移动终端程序和Windows桌面程序的软件解析工具,又是软件开发的基础资源包。l其具有以下特点:具备统一应用层接口。基于面向对象的开发。能够支持多种开发语言。1.1Microsoft.NET平台概述lMicrosoft.NET框
3、架 与Windows操 作 系 统 和Microsoft Visual Studio集成开发环境紧密联系,其基本工作原理如图1-1所示:图1-1.NET平台的基本原理第第1章章 C#概述概述 1.2 C#语言简介语言简介1.2C#语言简介lC#编程语言是微软公司推出的基于.NET框架的、面向对象的高级编程语言。lC#由C、C+、Java语言派生而来,继承了这三种语言的绝大多数语法和特点,是.NET框架中最常用的编程语言。lC#语言的语法相对C和C+简单一些,因此使用C#开发应用程序效率更高,成本更低。1.2C#语言简介lC#编程语言是微软公司推出的基于.NET框架的、面向对象的高级编程语言。l
4、C#由C、C+、Java语言派生而来,继承了这三种语言的绝大多数语法和特点,是.NET框架中最常用的编程语言。lC#语言的语法相对C和C+简单一些,因此使用C#开发应用程序效率更高,成本更低。1.2C#语言简介lC#依附于.NETFramework架构,它高效的运行效率、简单易于理解的语法,加之强大的编译器支持,使得程序的开发变得异常迅速。它的技术体系主要有以下几个方面:彻底的面向对象设计WindowsForm技术WPF技术WebForm技术MVC技术1.2C#语言简介lC#语言相比C、C+和Java等编程语言,具有以下特点:指针限制。垃圾回收机制。支持泛型。单继承机制。C#更加强调类型安全。
5、1.2C#语言简介l在.NET平台中,预先为C#语言编写了大量的基础类库供开发者使用,具体包含以下类库:数据访问类。窗体类。安全类。XML类。线程类。输入输出类。Web类。第第1章章 C#概述概述 1.3 Visual Studio集成开发环境集成开发环境1.3VisualStudio集成开发环境1.3.1开发环境简介1.3.2创建Windows应用程序1.3.3生成应用程序文件简介1.3.1开发环境简介l在使用语言开发软件的过程中,需要完成代码的编写、编译和调试等工作。lMicrosoft Visual Studio是 微 软 公 司 开 发 的 一 款 强 大 的.NETFramework
6、平台集成开发工具,也是开发Windows应用程序最主流的开发工具,其自身包括代码编辑器、编译器/解释器、调试工具、安装包建立工具等各种工具,适合开发各种Windows程序。l本书中使用了VisualStudio2012版(后简称为VS2012),需安装在Windows7(32位或64位)及以上系统。本书所有的例题都可以使用VS2012或以上版本打开运行。1.3.2创建Windows应用程序lWindows应用程序是一个比较开放的概念,是指可以在Windows平台上运行的所有程序,包括控制台应用程序、Windows窗体应用程序、WPF应用程序等。l我们主要介绍如何使用VS2012创建控制台应用程
7、序和Windows窗体应用程序。主要内容创建控制台应用程序所谓控制台应用程序,指在命令提示符窗口而非图形用户界面中运行的程序。其创建步骤如下:(1)启动VisualStudio2012,从“文件”菜单中选择“新建”-“项目”,选择VisualC#编程语言,选择“控制台应用程序”。(2)勾选“为解决方案创建项目”复选框,点击“确定”按钮,VisualStudio就会使用“控制台应用程序”模板创建项目,并显示了项目的初始代码。(3)编写程序代码。17主要内容开始第一个C#程序18项目Demo_1_1主要内容“解决方案资源管理器”中所列出的文件a.解决方案“Demo_1”l利用“解决方案”对项目文件
8、进行组织。每个应用程序都有一个解决方案,在解决方案中,可以包含一个或多个项目。解决方案文件后缀名为“.sln”。b.Demo_1_1lC#项目文件。每个项目文件都可包含一个或多个项目源代码以及其他项目相关文件(如图片等)。项目文件后缀名为“.csproj”。19主要内容“解决方案资源管理器”中所列出的文件c.Propertiesl是 项 目 中 的 一 个 文 件 夹,展 开 后 可 看 到“AssemblyInfo.cs”文件,是一个特殊文件。d.引用l“引用”文件夹中包含了对已编译好的代码库的引用。展开“引用”文件夹时,可看到VisualStudio在项目中添加的一组默认程序集引用,利用默
9、认程序集可访问.NET框架的诸多功能。20主要内容“解决方案资源管理器”中所列出的文件e.App.configl是应用程序配置文件,可在其中进行修改设置,以改变应用程序运行时的行为等。f.Program.csl是C#源代码文件,也是本书重点使用和学习的部分。Progrom.cs文件定义了Program类,其中包含Main方法。C#源程序文件都是使用“.cs”为文件扩展名。21主要内容开始第一个C#程序22项目Demo_1_1l输出一行语句“thisisthefirstC#program”Console类lConsole是由应用程序引用的程序集提供的一个类,Console类提供了在控制台窗口中显
10、示信息和从键盘读取信息的方法。lWriteLine是输出信息的重载方法名。例如:Console.WriteLine(thisisthefirstC#program);lReadLine是从键盘获取信息的重载方法名。例如:strings=Console.ReadLine();23主要内容创建Windows窗体应用程序Windows窗体是程序与用户交互的可视界面,比如弹出的消息对话框、记事本文件等都是Windows窗体应用程序。(1)和创建控制台应用程序操作类似,在创建窗体应用程序项目时,选择项目类型为“Windows窗体应用程序”。(2)点击确定后,可看到创建成功的Windows窗体应用程序,除
11、了可以看到代码部分,还可以切换看到窗体界面的设计效果。(3)编写程序代码。24主要内容开始第一个Windows窗体程序25项目Demo_1_21.3.3生成应用程序文件简介l在编写好源码之后,需要编译代码并生成可运行的程序文件,具体步骤如下:点击“生成”菜单中的“生成解决方案”,此时,程序会自动保存。点击“调试”菜单中“启动调试”(快捷键F5),若程序正确,则会打开命令窗口,程序开始运行。也可以点击“调试”菜单中“开始执行(不调试)”(快捷键Ctrl+F5),程序也可以运行。在同一个解决方案下,可运行不同的项目。C#程序结构介绍第第1章章 C#概述概述271.4C#程序结构介绍281命名空间2
12、Main方法3输入和输出4程序注释1.命名空间l命名空间类似于类的容器,即使类的名称相同,在不同的命名空间下,也不会发生冲突。l命名空间和类的关系,非常类似于操作系统中目录与文件的关系:为了解决命名冲突和便于管理,将文件放于不同的目录,一个目录是一组文件的集合,并且一个目录可以嵌套包含其他的目录。l使 用 namespace命 令 定 义 一 个 命 名 空 间。通 过 把 类 放 在namespace里面,这个类名就自动具有了一个与命名空间名字相同的前缀,这个类的完整类名就变成了namespace.classname的形式。291.命名空间在项目Demo_1_1中,可看到如下代码:names
13、paceDemo_1_1/定义命名空间为Demo_1_1classProgram/完整类名是Demo_1_1.Program在项目Demo_1_2中,有以下代码:namespaceDemo_1_2/定义命名空间为Demo_1_2staticclassProgram/完整类名是Demo_1_2.Program301.命名空间l使用using命令,用于限定要使用的命名空间。如项目顶部的代码部分:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tas
14、ks;l使用using命令后,同一个文件后续代码可以不再指定命名空间限定对象。由于上述五行命名空间在项目开发过程中频繁使用,所以新建项目时,VisualStudio会自动添加这些using命令。在开发过程中,可根据实际需要,增减代码顶部的using命令。312Main方法lMain方法是C#程序的入口点,C#程序运行时,不管是控制台应用程序还是Windows窗体应用程序,都从Main方法开始执行。Main方法必须被声明为静态的。l根据返回类型和入口参数的不同,Main方法可以有以下几种形式:staticvoidMain()staticvoidMain(stringargs)staticintM
15、ain()staticintMain(stringargs)322Main方法l新建一个控制台应用程序,项目名称为ArgumentTest,项目位置为C:。完成Main方法如下所示。staticvoidMain(stringargs)Console.WriteLine(Hello+args0);Console.Read();l将参数传递给Main方法有两种方式:(1)在运行程序时传递参数。(2)在开发环境中传递参数。333输入和输出lConsole类位于命名空间System,它为控制台程序提供了最基本的输入、输出方法,通常用Console类的WriteLine、Write方法输出,用ReadL
16、ine、Read方法输入。(1)WriteLine和Write(2)格式化输出(3)ReadLine和Read34(1)WriteLine和WritelWriteLine和Write方法均用于在标准输出设备(一般是屏幕)上输出文本(即字符串),两者的区别在于WriteLine输出后自动加一个回车换行,而Write不自动换行。inta=5;strings=”helloworld”;Console.WriteLine(a);Console.WriteLine(s);Console.WriteLine(s+a);5353输入和输出5helloworldhelloworld5(2)格式化输出lWrit
17、eLine和Write方法还可以输出格式化信息,格式如下:Console.WriteLine(格式化字符串,输出对象1,输出对象2,);Console.Write(格式化字符串,输出对象1,输出对象2,);l其中,格式化字符串的常用格式为:“0.1.”,0与输出对象1的内容相对应,1与输出对象2的内容相对应,其他内容按原样输出。inta=5;strings=”helloworld”;Console.WriteLine(”a=0,s=1”,a,s);5363输入和输出a=5,s=hello world(3)ReadLine和ReadlReadLine方法用于从标准输入设备(通常是键盘)输入一行字
18、符(以回车表示结束),返回的结果是string(字符串)类型数据,如下所示:strings=Console.ReadLine();l【说明】Console.ReadLine()的返回结果只能是字符串,如果需要数值,则可以将字符串s通过Convert类的方法转换为相应的数值。5373输入和输出(3)ReadLine和ReadlRead方法也是从标准输入设备(通常是键盘)输入字符,不过它只接收一个字符,并且返回的结果是一个int型数值,即该字符的ASCII码。例如:intn=Console.Read();l【说明】Console.Read()的返回结果只能是int型,如果需要其他类型,需要使用Co
19、nvert类的方法转换为相应的类型。5383输入和输出(3)ReadLine和Readintn=Console.Read();charc=Convert.ToChar(n);l上面的代码中,先将输入的字符的ASCII码赋给int型的变量n,再通过Convert.ToChar进行转换,最终将输入的字符赋给char(字符)型变量c。5393输入和输出l程序中加入注释是为了程序更加清晰可读。注释是给开发、调试和维护程序的人看的,而不是用来执行以达到某个效果的,注释不会被编译,更不会产生可执行代码。l注释分为以下几种:/单行注释/*/多行注释/XML注释5404程序注释 1.5 简单的程序调试过程简单
20、的程序调试过程第第1章章 C#概述概述411.5简单的程序调试过程l在开发应用程序的过程中,尤其当程序出现错误或者未得到预期的结果时,经常需要进行调试,以便找出问题所在。l作为一个优秀的集成开发环境,VS2012在调试方面的功能也非常强大,VS2012的调试器可以以高度可视化的方式显示调试中的程序信息,还可以设置条件断点。421.5简单的程序调试过程新建一个控制台应用程序,其中Main方法如下:staticvoidMain(stringargs)inta;a=1;Console.WriteLine(a);a=2;/断点处Console.WriteLine(a);a=3;Console.Writ
21、eLine(a);431.5简单的程序调试过程44图1-15添加断点图1-16程序执行到断点处暂停1.5简单的程序调试过程l断点的作用是程序执行到断点处时暂停,按下F5,程序在断点处暂停。l黄色箭头和黄色背景代表将要执行的下一条语句,由于a=2;语句还没有被执行,所以局部变量窗口处a的值仍然为1。l如果想单步执行,需按下F11或者l既可以单步执行直到程序运行结束,也可以按下直接停止调试。45第第1章章 C#概述概述 谢谢!谢谢!第第2章章 C#语法基础语法基础第2章C#语法基础2.1数据类型2.2变量和常量2.3语句2.4随机数2.5应用实例:斗地主发牌模拟第第2章章 C#语法基础语法基础 2
22、.1 数据类型数据类型2.1数据类型l数据是程序处理的基本对象,编写程序的本质是对数据进行处理并获取结果。数据都是以某种特定的形式存在的,如整数、字符串等。l在C#中,根据数据的内容和存储方式,可以把数据分为两大类值类型引用类型2.1数据类型2.1.1值类型2.1.2引用类型2.1.3类型转换2.1.1值类型l值类型用来表示实际存在的数值,如数学中的整数和小数在C#中对应表示为整型数据和浮点型数据。l在C#中,包含以下值类型数据。1.整型2.浮点型(又称实型)3.字符型4.布尔类型5.结构类型6.枚举类型1浮点型l整型指不包含小数部分的数字,包含正整型、负整型和0共三类数字。C#中将整型数据分
23、为8类,如表所示。数据类型数据类型类型标识符类型标识符字节数字节数数值范围数值范围字节sbyte1-128127之间的整数无符号字节byte10255之间的整数短整型short2-3276832767之间的整数无符号短整型ushort2065535之间的整数整型int4-21474836482147483647之间的整数无符号整型uint404294967295之间的整数长整型long8-92233720368547758089223372036854775807之间的整数无符号长整型ulong8018446744073709551615之间的整数2浮点型(又称实型)l浮点数float(单精度
24、),在浮点数后添加一个小写f或者大写F作为后缀。double(双精度),不需要添加后缀。l十进制小数decimal,在数字后面应添加小写m或者大写M作为后缀。数据类型数据类型类型标识符类型标识符字节数字节数数值范围数值范围单精度实数float4双精度实数double8十进制实数decimal163字符型l字符型数据用来处理ASCII字符和Unicode编码字符,可存储065535之间的整数。字符型数据类型标识符为char。l在处理一些特殊字符时,如处理单引号自己“”,需要在字符前添加转义字符单斜杠“”进行处理。转义符转义符作用作用转义符转义符作用作用单引号双引号斜杠0空字符a警报bBackSp
25、ace回退f换页符n换行符r回车t水平制表符uUnicode转义序列U代理项对的Unicode转义序列v垂直制表符x类似于u,但长度可变4布尔类型l布尔类型数据就是逻辑型数据,类型标识符为bool,用来表示逻辑真和逻辑假,其值只有true和false。l【注意】很多编程语言中(如、+)都可以用1表示逻辑值true,用0表示逻辑值false,但是在C#中声明为bool类型数据时,不能用1(0)替代true(false),否则会报错。5结构类型l前面介绍的四种类型为基本数值型数据,除了这四种基本数据类型以外,在程序中,经常需要管理一些复杂数据,比如包含多个简单类型数据的一组数据。l结构类型数据就是
26、C#中一种特殊的数据类型,它本身不是一个数值或一个字符,而是可包含多种不同类型数据并自定义其类型名称的一种数据类型。l使用结构类型时,可将不同类型数据作为一个整体进行管理,实现数据的结构化。5结构类型l例如,在学生管理系统中,将学生的姓名、学号和性别作为一个整体结构进行处理,将一个学生作为该结构的数据元素进行定义。/声明结构类型publicstructstudents/struct指定结构体类型,students为类型名publicstringname;/结构体成员name,为字符串类型publiccharsex;/结构体成员sex,为字符类型publicintnum;/结构体成员num,为整
27、型/用结构类型students定义数据studentsstu1;/为结构中所有成员赋值stu1.name=”张三”;stu1.sex=男;stu1.num=201701;6枚举类型l枚举类型也是一种复杂数据类型,主要用于表示一组逻辑上相关联的项的组合,为简单类型的数值提供别名表示,使用关键字enmu来定义。l最典型的事例是用枚举类型枚举星期,定义方式为:/定义枚举类型enumWeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;/用枚举类型定义变量Weekdayw1;/给枚举变量赋值,其值只能为枚举元素w1=Weekda
28、y.Monday;2.1.2引用类型l在程序中,对于定义的变量,值类型数据存储的是变量本身的值,在引用类型数据中,存储了存放该变量的地址值。lC#的引用类型主要包括数组(array)、类(class)、接口(interface)、委托(delegate)以及内置引用类型object和字符串(string)。l关于类、接口和委托的部分会在后面章节里详细介绍,这里主要介绍数组类型和字符串类型数据。1.数组l数组是一种特殊的数据结构,其作用是将一批类型相同的数据元素进行有序的集合和管理。l数组中的元素存储在一段连续的内存块中,每个元素对应唯一的索引,可根据数组名和元素索引值(下标值)访问其中的某一个
29、数组元素。l数组包括:(1)一维数组(2)多维数组(1)一维数组lC#中采用下列方式声明数组:baseTypearrayName;其中,baseType指定数组的数据类型,它可以是任意的变量类型,如前面介绍的整型、结构型等。l在使用数组前,需要进行初始化操作,可使用new关键字进行数组对象的实例化操作。l定义一个包含5个元素的整型数组并进行初始化操作:intarray=newint5;(1)一维数组l也可以在创建数组时对元素进行赋值,通过确定的元素值,可以确定数组元素的个数,如:intarray=5,10,20,12,30;l引用数组的某一个元素时,使用数组名元素索引的方式,元素索引值从0开始
30、,如果一个数组的长度为n,则索引范围是0(n-1)。l例如需将上述数组中第三个元素的内容读入一个整型变量中,则应表示为:inta;a=array2;读取a的值为20(2)多维数组l在定义一维数组时只指定了一个下标值,即指定了数组长度,每个数组元素只有一个值。如果一个数组中的每一个元素都是由n个该数据类型的数据所构成,则称该数组为二维数组;以此类推。l定义多维数组时,需要在方括号内添加逗号“,”,以确认数组的维度,然后再赋值或者定义元素数量,以二维数组为例,定义并初始化方式为:baseType,arrayName=newbaseTypeN1,N2;(2)多维数组l例如,定义一个有5个元素的二维数
31、组,要求每个元素包含3个整型变量,则int,intArray=newint5,3;l在理解上,可以想象二维数组的第一维度是行,第二维度是列,则上述定义了一个总共有5行,每行上有3个整型元素的二维数组。(2)多维数组l在对二维数组赋值时,需要将每个包含有多个数据的元素用大括号“”括起来,例如:char,chArray=a,b,张,李,0,1;l表示定义了一个字符类型的二维数组,总共有三行元素,每行又包含两个数据。l在访问二维数组的某个数据时,需要提供行和列上的两个索引值来指定元素的位置,如:charc;c=chArray1,0;字符c 的值是张。2字符串l在值类型数据中,用char类型定义一个字
32、符,如果是多个字符的集合,则使用字符串类型定义。字符串类型是C#中最简单的引用类型数据,类型关键字是string。l在书写字符串类型数据时,需要在字符串引用两侧添加双引号“”。stringstr=”HelloC#!”;l对于string类型数据,可以看作char类型的只读数组,可以使用下列方式访问string数据中的某个字符:stringstr=”HelloC#!”;/定义字符串变量charch=str4;/将字符串的索引值为4的字符赋值给字符变量chlstring类型数据的索引值从0开始,所以,ch=o。1隐式转换l在程序执行过程中,不同类型的数据往往需要进行类型转换,以期望程序正确执行。在
33、C#语言中,类型转换有两种形式:隐式转换和显示转换。1.隐式转换l对于值类型数据而言,数据类型A到数据类型B的转换可以在任意状况下进行,由编译器直接执行转换规则,称之为隐式转换。l所以隐式转换的规则是,由数值范围小的数据类型向数值范围大的数据类型转换。2显示转换2.显示转换l明确需要将数据类型转换为特定的数据类型,则是显示转换。该操作需要编写额外的代码实现。l根据数据类型不同,可采用下列几种方式进行显示转换。(1)强制类型转换(2)使用Convert命令进行显示转换(3)使用ToString方法转换2显示转换(1)强制类型转换l转换格式:(类型名)(表达式)l表示将表达式强制转换成括号类指定的
34、类型。l如果要将一个对象类型显示转换为值类型数据,或将一个接口类型显示转换为执行该接口的值类型数据,也会用到强制类型转换的方式,称之为拆箱操作。(int)x;/将x强制转换成整型(float)(5/3);/将5/3的值强制转换成单精度实数intintData=10;/定义整型变量intDataobjectobjData=intData;/装箱intintData2=(int)objData;/拆箱,将objData对象强制转换成int类型2显示转换(2)使用Convert命令进行显示转换命令方式命令方式转换方式转换方式Convert.ToBoolean(value)将value值转换为bool
35、类型Convert.ToByte(value)将value值转换为Byte类型Convert.ToChar(value)将value值转换为char类型Convert.ToDecimal(value)将value值转换为Decimal类型Convert.ToDouble(value)将value值转换为double类型Convert.ToInt16(value)将value值转换为short类型Convert.ToInt32(value)将value值转换为int类型Convert.ToInt64(value)将value值转换为long类型Convert.ToSByte(value)将val
36、ue值转换为sbyte类型Convert.ToSingle(value)将value值转换为float类型Convert.ToString(value)将value值转换为string类型Convert.ToUInt16(value)将value值转换为ushort类型Convert.ToUInt32(value)将value值转换为uint类型Convert.ToUInt64(value)将value值转换为ulong类型2显示转换(3)使用ToString方法转换l如果想将其他类型数据转换为字符串类型,大多数都可以使用类型自带的ToString()方法,其通常用于将变量转换为字符串类型数据
37、。l例如:inta=3;/定义整型变量a,初始值为3strings=a.ToString();/将整型变量a的值转换为字符串赋值给字符串类型变量s第第2章章 C#语法基础语法基础 2.2 变量和常量变量和常量2.2变量和常量l变量和常量是在所有编程语言中都非常重要的一个概念,在前面部分也经常被提到。l在程序执行过程中,其值可以发生改变的量称为变量,需要定义数据类型、名称并存放在内存空间里。l而值不能发生改变的称为常量,比如12,10都是整型常量2.2变量和常量2.2.1变量2.2.2常量2.2.1变量l在编写程序过程中,变量需要先声明在使用。声明时,要指定变量的名称和数据类型。变量声明方式是:
38、typename;/type指定数据类型,name指定变量名表列inta;/声明一个整型变量acharch1,ch2;/声明两个字符变量ch1,ch2boolb;/声明一个布尔类型变量bl每个变量都有一个自己的名称,其命名规则符合标识符的命名规则,只能由字母、数字和下划线3种字符组成,且第一个字符必须是字母或下划线,但变量名不可以和C#语言关键字或类名相同。2.2.1变量l在声明变量时需要进行初始化变量值的操作,也可以在程序执行过程中不断的修改变量存储的值,以下方式都可以对变量进行赋值。l变量只有在赋值后才能使用,赋值时要根据变量的类型来进行赋值。inta=10;/声明整型变量a并赋值inta
39、;a=10;/声明整型变量a,再通过赋值语句对a赋值2.2.2常量l在编程过程中,值不会改变的量称为常量。在C#中可以用const关键字定义符号表示常量。l常量也可以看作是变量的一种特殊情况,在内存中只能被读取,不能被修改。使用const关键字定义常量格式为:constTypeConstantName;/Type指定类型,ConstantName指定常量名l例如,定义单精度实数Pi表示圆周率constfloatPi=3.1415926f;第第2章章 C#语法基础语法基础 2.3 语句语句2.3语句l程序中,语句是执行操作的命令,比如对变量进行赋值操作,处理数据时进行的运算操作,比较两个数据关系
40、时的比较操作,存储结果操作等等。l在C#中,任何语句都必须以分号“;”终止,否则语句不能被编译。l我们分别从表达式语句、流程控制语句和异常处理语句来介绍C#的语句。2.3语句2.3.1表达式语句2.3.2流程控制语句2.3.3异常处理语句2.3.1表达式语句l表达式语句是C#程序中最基本的语句,在介绍表达式语句以前,需要先了解一下C#中的表达式。l由操作数和运算符组成的序列称之为表达式,包括算术运算表达式、赋值运算表达式、关系运算表达式、逻辑运算表达式等。1算术运算和算术运算语句l算术运算是最基本的数据运算,主要用于实现数学运算功能,算术运算只能处理整型数据和实型数据。C#支持的算术运算符包括
41、以下7种:+:加法运算符(正值运算符),如5+8,a+b-:减法运算符(负值运算符),如8-5,a-b*:乘法运算符,如5*8,a*b/:除法运算符,如8/5,a/b%:取模运算符(求两个整数相除后的余数),如8%5,a%b+:自增运算符,使整型变量的值增1,如a+,+n-:自减运算符,使整型变量的值减1,如a-,-n1算术运算和算术运算语句【说明】l除法运算时,两个整数相除的值为整数,系统会舍去小数部分。当整数与实数参与除法运算时,系统会自动把整数、单精度实数都按double类型数据处理。l取模运算中,只能是两个整数参与运算,取相除后的余数。如,8/5=1,8%5=3,注意区分两种运算过程。
42、l在自增自减运算中,自增自减运算符可以以前缀方式或者后缀方式进行运算。2赋值运算和赋值运算语句l赋值运算是将一个数据(表达式)的值赋值给一个变量,赋值运算符为“=”,由赋值运算符和一个表达式连接在一起的式子称为“赋值表达式”,表达式后加上分号构成赋值语句。l赋值运算是右结合性,即按“自右向左”的方向结合运算,所以“a=(b=5)”与“a=b=5”等价。l在给变量进行赋值时,以最后的赋值为准。lC#也支持复合赋值运算,如+=、-=、*=、/=、%=。3关系运算l关系运算符分为以下几类:(1)基本比较运算符用于比较两个表达式的大小关系,如果满足关系,表达式返回逻辑真值true,否则返回逻辑假fal
43、se。常见比较运算符有:=、!=、=(2)类型比较运算is运算符用于判断对象是否属于某个类的实例,如果是,返回true,否则返回false。as运算符用于在兼容的引用类型中执行某些类型的转换,其只执行引用转换和装箱转换,不执行用户自定义转换。4逻辑运算l逻辑运算是针对逻辑型数据判断其逻辑结果的一种运算,用逻辑运算符和表达式构成的式子称之为逻辑表达式,其返回值为逻辑值,逻辑运算表达式也多用于条件判断结构中,C#中有以下逻辑运算符:&:逻辑与运算符,若运算符两侧的表达式值都为真(true)时,则逻辑运算表达式值为真|:逻辑或运算符,若运算符两侧的表达式中包含真(true)值时,则逻辑运算表达式值即
44、为真!:逻辑非运算符,对某个表达式进行取反操作,若表达式为真,则逻辑运算表达式值为假5按位运算(1)按位逻辑运算l指将整数转换为二进制形式,将每一个数位上的0视为逻辑假(false),数位上的1视为逻辑真(true),再进行逻辑运算。按位逻辑运算有以下四种运算符:&、|、。(2)按位位移运算l指二进制数的数位位置进行移动操作的运算。C#中提供左移运算和右移运算两种按位位移运算符。左移运算符是。(3)按位赋值运算l类似于赋值运算中的复合赋值运算的形式,按位赋值运算是将前两种位运算符结合赋值运算符使用。如:&=、|=、=。2.3.2流程控制语句l前面所介绍的基本语句,在默认状况下,是按照从上而下按
45、顺序逐行执行的。但在实际开发过程中,需要控制程序执行的顺序,主要有两种流程控制方式:条件分支控制:if、switch循环控制:while、dowhile、for和foreach循环if语句(1)if语句lif语句是单分支条件控制语句,表示如果表达式值为真,则执行语句(语句块)。语句块是由多条语句组合而成,需用大括号括起来。其格式为:当表达式值为真时执行语句块if(表达式)语句块;ifelse语句(2)ifelse语句lifelse语句是双分支控制语句,表示根据条件表达式的逻辑值,选择执行两个语句块中的某一个。其格式为:if(表达式)语句块1;else语句块2;当表达式值为真时执行语句块1,否则
46、执行else后的语句块2嵌套if语句(3)嵌套if语句if(表达式1)if(表达式2)语句1;else语句2;elseif(表达式3)语句3;else语句4;if(表达式1)语句块1;elseif(表达式2)语句块2elseif(表达式n)语句块n;else语句块;内嵌ififelse if语句块switch语句(4)switch语句lswitch语句的基本格式为:当表达式的值与某个case常量表达式的值相等时,就执行该case后的语句switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;break;whil
47、e循环(1)while循环控制lwhile是循环中最基本的循环语句,称之为“当型”循环。其一般格式为:while(条件表达式)循环体语句;图2-3 while循环执行流程dowhile循环(2)dowhile循环控制ldowhile是“直到型”循环,表示执行循环体语句,直到不满足循环条件时结束循环。其一般格式为:do循环体语句;while(条件表达式);图2-4 dowhile循环执行流程for循环(3)for循环控制lC#程序中,for循环形式最常用,最灵活,其一般格式为:for(初始表达式;条件表达式;迭代表达式)循环体语句;初始表达式:可用来设定循环控制变量,并为变量赋初始值。条件表达式
48、:其值为逻辑量,为真时继续循环,为假时循环终止。迭代表达式:决定循环控制变量在每次循环后是如何改变的。for循环(3)for循环控制lfor循环的执行流程如下:当循环第一次开始时,先执行循环的初始表达式。求解条件表达式,若是真(true),执行循环体语句;若为假(false),则循环中止。执行迭代表达式。跳转到第步执行。图2-5 for循环执行流程foreach循环(4)foreach循环l在C#中,针对访问数组或对象集合中的所有元素,提供了一种较为简单的方式使用foreach循环语句。其一般格式为:foreach(数据类型标识符in数组/集合)数据类型指标识符的类型,应和数组(集合)的数据类
49、型相同,或大于数组(集合)的数据类型。标识符用来表示数组元素的名称。数组集合指要访问的数组(集合)。循环中断语句(5)循环中断语句l在循环过程中,除了依靠循环条件的限定来结束循环以外,经常也需要主动中断循环。主动中断主要有以下形式:break语句:表示终止所有循环,跳出循环结构,继续执行循环之后的操作。continue语句:立即终止本次循环,继续执行下一次循环。goto语句:通过goto语句可以跳出循环,跳转到指定的位置上,在编写程序过程中,不建议经常使用goto语句,因为程序中的随意跳转,会导致程序混乱,程序可读性降低。2.3.3异常处理语句l在.NETFramework中,用Excepti
50、on类表示基类异常,在处理异常时,会用到4个关键字:try、catch、throw和finally。l使用throw语句主动抛出异常;l使用try/catch语句块中的try语句监控可能受到异常的语句,并使用catch语句处理产生的异常;l在try/catch语句块中结合finally语句继续执行后面程序的代码。1throw语句lthrow语句允许在特定的情形下主动抛出异常,其基本格式为:throwexpression;其中:expression表示所要抛出的异常对象,这个异常对象是派生自System.Exception类的对象。l因为throw语句会无条件的将控制转向别处,所以throw语句