资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,*,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,单击此处编辑母版文本样式,第二级,*,*,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,*,*,第,1,章,C#,概述,第,1,章,C#,概述,1.1,Microsoft.NET,平台概述,1.2,C#,语言简介,1.3,Visual Studio,集成开发环境,1.4,C#,程序结构介绍,1.5,简单的程序调试过程,第,1,章,C#,概述,1.1 Microsoft.NET,平台概述,1.1 Microsoft.NET,平台概述,Microsoft.NET,平台是由微软公司开发的软件开发系统平台,包括各种优秀的编程语言和其他技术,是一种主要用于,Windows,操作系统的托管代码编程模型。,在,.NET,平台中,提供了大量的公共类库,包括了,Visual C#,、,Visual C+.NET,、,Visual J#,、,Visual Basic.NET,等技术,配合微软公司推出的,Visual Studio,系列产品,深受广大开发人员的青睐,是当前程序开发人员的首选技术之一。,1.1 Microsoft.NET,平台概述,Microsoft.NET,框架是微软公司在,21,世纪初开发的致力于敏捷而快速的软件开发框架,其更加注重平台无关化和网络透明化。,Microsoft.NET,框架既是一个灵活、稳定的能运行服务器端程序、富互联网应用、移动终端程序和,Windows,桌面程序的软件解析工具,又是软件开发的基础资源包。,其具有以下特点:,具备统一应用层接口。,基于面向对象的开发。,能够支持多种开发语言。,1.1 Microsoft.NET,平台概述,Microsoft.NET,框架与,Windows,操作系统和,Microsoft Visual Studio,集成开发环境紧密联系,其基本工作原理如图,1-1,所示:,图,1-1.NET,平台的基本原理,第,1,章,C#,概述,1.2 C#,语言简介,1.2 C#,语言简介,C#,编程语言是微软公司推出的基于,.NET,框架的、面向对象的高级编程语言。,C#,由,C,、,C+,、,Java,语言派生而来,继承了这三种语言的绝大多数语法和特点,是,.NET,框架中最常用的编程语言。,C#,语言的语法相对,C,和,C+,简单一些,因此使用,C#,开发应用程序效率更高,成本更低。,1.2 C#,语言简介,C#,编程语言是微软公司推出的基于,.NET,框架的、面向对象的高级编程语言。,C#,由,C,、,C+,、,Java,语言派生而来,继承了这三种语言的绝大多数语法和特点,是,.NET,框架中最常用的编程语言。,C#,语言的语法相对,C,和,C+,简单一些,因此使用,C#,开发应用程序效率更高,成本更低。,1.2 C#,语言简介,C#,依附于,.NET Framework,架构,它高效的运行效率、简单易于理解的语法,加之强大的编译器支持,使得程序的开发变得异常迅速。它的技术体系主要有以下几个方面:,彻底的面向对象设计,Windows Form,技术,WPF,技术,WebForm,技术,MVC,技术,1.2 C#,语言简介,C#,语言相比,C,、,C+,和,Java,等编程语言,具有以下特点:,指针限制。,垃圾回收机制。,支持泛型。,单继承机制。,C#,更加强调类型安全。,1.2 C#,语言简介,在,.NET,平台中,预先为,C#,语言编写了大量的基础类库供开发者使用,具体包含以下类库:,数据访问类。,窗体类。,安全类。,XML,类。,线程类。,输入输出类。,Web,类。,第,1,章,C#,概述,1.3 Visual Studio,集成开发环境,1.3 Visual Studio,集成开发环境,1.3.1,开发环境简介,1.3.2,创建,Windows,应用程序,1.3.3,生成应用程序文件简介,1.3.1,开发环境简介,在使用语言开发软件的过程中,需要完成代码的编写、编译和调试等工作。,Microsoft Visual Studio,是微软公司开发的一款强大的,.NET Framework,平台集成开发工具,也是开发,Windows,应用程序最主流的开发工具,其自身包括代码编辑器、编译器,/,解释器、调试工具、安装包建立工具等各种工具,适合开发各种,Windows,程序。,本书中使用了,Visual Studio 2012,版(后简称为,VS2012,),需安装在,Windows7,(,32,位或,64,位)及以上系统。本书所有的例题都可以使用,VS2012,或以上版本打开运行。,1.3.2,创建,Windows,应用程序,Windows,应用程序是一个比较开放的概念,是指可以在,Windows,平台上运行的所有程序,包括控制台应用程序、,Windows,窗体应用程序、,WPF,应用程序等。,我们主要介绍如何使用,VS2012,创建控制台应用程序和,Windows,窗体应用程序。,主要内容,创建控制台,应用程序,所谓控制台应用程序,指在命令提示符窗口而非图形用户界面中运行的程序。其创建步骤如下:,(,1,)启动,Visual Studio2012,,从“文件”菜单中选择“新建”,-,“项目”,选择,Visual C#,编程语言,选择,“控制台应用程序”,。,(,2,)勾选“为解决方案创建项目”复选框,点击“确定”按钮,,Visual Studio,就会使用“控制台应用程序”模板创建项目,并显示了项目的初始代码,。,(,3,)编写程序代码。,17,主要内容,开始第一个,C#,程序,18,项目,Demo_1_1,主要内容,“解决方案资源管理器”中所列出的文件,a.,解决方案“,Demo_1,”,利用“解决方案”对项目文件进行组织。每个应用程序都有一个解决方案,在解决方案中,可以包含一个或多个项目。解决方案文件后缀名为,“,.,sln,”,。,b.Demo_1_1,C#,项目文件。每个项目文件都可包含一个或多个项目源代码以及其他项目相关文件(如图片等)。项目文件后缀名为,“,.,csproj,”,。,19,主要内容,“解决方案资源管理器”中所列出的文件,c.Properties,是项目中的一个文件夹,展开后可看到“,AssemblyInfo.cs,”文件,是一个特殊文件,。,d.,引用,“引用”文件夹中包含了对已编译好的代码库的引用。展开“引用”文件夹时,可看到,Visual Studio,在项目中添加的一组默认程序集引用,利用默认程序集可访问,.NET,框架的诸多功能。,20,主要内容,“解决方案资源管理器”中所列出的文件,e.,App.config,是应用程序配置文件,可在其中进行修改设置,以改变应用程序运行时的行为等。,f.,Program.cs,是,C#,源代码文件,也是本书重点使用和学习的部分。,Progrom.cs,文件定义了,Program,类,其中包含,Main,方法。,C#,源程序文件都是使用,“,.,cs,”,为文件扩展名。,21,主要内容,开始第一个,C#,程序,22,项目,Demo_1_1,输出一行语句,“this is the first C#program”,Console,类,Console,是由应用程序引用的程序集提供的一个类,,Console,类提供了在控制台窗口中显示信息和从键盘读取信息的方法。,WriteLine,是输出信息的重载方法名。,例如:,Console.WriteLine,(this is the first C#program);,ReadLine,是,从键盘获取,信息的重载方法名。,例如:,string s=,Console.ReadLine,();,23,主要内容,创建,Windows,窗体,应用程序,Windows,窗体是程序与用户交互的可视界面,比如弹出的消息对话框、记事本文件等都是,Windows,窗体应用程序。,(,1,)和创建控制台应用程序操作类似,在创建窗体应用程序项目时,选择项目类型为,“,Windows,窗体应用程序”,。,(,2,)点击确定后,可看到创建成功的,Windows,窗体应用程序,除了可以看到代码部分,还可以切换看到窗体界面的设计效果,。,(,3,)编写程序代码。,24,主要内容,开始第一个,Windows,窗体程序,25,项目,Demo_1_2,1.3.3,生成应用程序文件简介,在编写好源码之后,需要编译代码并生成可运行的程序文件,具体步骤如下:,点击“生成”菜单中的“生成解决方案”,此时,程序会自动保存。,点击“调试”菜单中“启动调试”(快捷键,F5,),若程序正确,则会打开命令窗口,程序开始运行。也可以点击“调试”菜单中“开始执行(不调试)”(快捷键,Ctrl+F5,),程序也可以运行。,在同一个解决方案下,可运行不同的项目。,C#,程序结构介绍,第,1,章,C#,概述,27,1.4 C#,程序结构介绍,28,1,命名空间,2,Main,方法,3,输入和输出,4,程序注释,1.,命名空间,命名空间类似于类的容器,即使类的名称相同,在不同的命名空间下,也不会发生冲突。,命名空间和类的关系,非常类似于操作系统中目录与文件的关系:为了解决命名冲突和便于管理,将文件放于不同的目录,一个目录是一组文件的集合,并且一个目录可以嵌套包含其他的目录。,使用,namespace,命令定义一个命名空间,。,通过把类放在,namespace,里面,这个类名就自动具有了一个与命名空间名字相同的前缀,这个类的完整类名就变成了,namespace.classname,的形式。,29,1.,命名空间,在项目,Demo_1_1,中,可看到如下代码:,namespace Demo_1_1 /,定义命名空间为,Demo_1_1,class Program /,完整类名是,Demo_1_1.Program,在项目,Demo_1_2,中,有以下代码:,namespace Demo_1_2 /,定义命名空间为,Demo_1_2,static class Program /,完整类名是,Demo_1_2.Program,30,1.,命名空间,使用,using,命令,用于限定要使用的命名空间。如项目顶部的代码部分:,using System;,using System.Collections.Generic;,using System.Linq;,using System.Text;,using System.Threading.Tasks;,使用,using,命令后,同一个文件后续代码可以不再指定命名空间限定对象。由于上述五行命名空间在项目开发过程中频繁使用,所以新建项目时,,Visual Studio,会自动添加这些,using,命令。在开发过程中,可根据实际需要,增减代码顶部的,using,命令。,31,2,Main,方法,Main,方法是,C#,程序的入口点,,C#,程序运行时,不管是控制台应用程序还是,Windows,窗体应用程序,都从,Main,方法开始执行。,Main,方法必须被声明为,静态,的。,根据返回类型和入口参数的不同,,Main,方法可以有以下几种形式:,static void Main(),static void Main(string args),static int Main(),static int Main(string args),32,2,Main,方法,新建一个控制台应用程序,项目名称为,ArgumentTest,,项目位置为,C:,。完成,Main,方法,如下所示。,static void Main(string args),Console.WriteLine(Hello +args0);,Console.Read();,将参数传递给,Main,方法有两种方式:,(,1,)在运行程序时传递参数。,(,2,)在开发环境中传递参数。,33,3,输入和输出,Console,类位于命名空间,System,,它为控制台程序提供了最基本的输入、输出方法,通常用,Console,类的,WriteLine,、,Write,方法输出,用,ReadLine,、,Read,方法输入。,(,1,),WriteLine,和,Write,(,2,)格式化输出,(,3,),ReadLine,和,Read,34,(,1,),WriteLine,和,Write,WriteLine,和,Write,方法均用于在标准输出设备(一般是屏幕)上输出文本(即字符串),两者的区别在于,WriteLine,输出后自动加一个回车换行,而,Write,不自动换行。,int,a=5;,string s=”hello world”;,Console.WriteLine,(a);,Console.WriteLine,(s);,Console.WriteLine,(,s+a,);,5,35,3,输入和输出,5,hello world,hello world5,(,2,)格式化输出,WriteLine,和,Write,方法还可以输出格式化信息,格式如下:,Console.WriteLine,(格式化字符串,输出对象,1,,输出对象,2,),;,Console.Write,(格式化字符串,输出对象,1,,输出对象,2,),;,其中,格式化字符串的常用格式为:“,0.1.,”,,0,与输出对象,1,的内容相对应,,1,与输出对象,2,的内容相对应,,,其他内容按原样输出。,int,a=5;,string s=”hello world”;,Console.WriteLine,(”a=0,s=1”,a,s,);,5,36,3,输入和输出,a=5,s=hello world,(,3,),ReadLine,和,Read,ReadLine,方法用于从标准输入设备(通常是键盘)输入一行字符(以回车表示结束),返回的结果是,string,(字符串)类型数据,如下所示:,string s=Console.ReadLine();,【说明】,Console.ReadLine(),的返回结果只能是字符串,如果需要数值,则可以将字符串,s,通过,Convert,类的方法转换为相应的数值。,5,37,3,输入和输出,(,3,),ReadLine,和,Read,Read,方法也是从标准输入设备(通常是键盘)输入字符,不过它只接收一个字符,并且返回的结果是一个,int,型数值,即该字符的,ASCII,码。例如:,int,n=,Console.Read,();,【说明】,Console.Read,(),的返回结果只能是,int,型,如果需要其他类型,需要使用,Convert,类的方法转换为相应的类型。,5,38,3,输入和输出,(,3,),ReadLine,和,Read,int,n=,Console.Read,();,char c=,Convert.ToChar,(n);,上面的代码中,先将输入的字符的,ASCII,码赋给,int,型的变量,n,,再通过,Convert.ToChar,进行转换,最终将输入的字符赋给,char,(字符)型变量,c,。,5,39,3,输入和输出,程序中加入注释是为了程序更加清晰可读。注释是给开发、调试和维护程序的人看的,而不是用来执行以达到某个效果的,注释不会被编译,更不会产生可执行代码。,注释分为以下几种:,/,单行注释,/*,*/,多行注释,/XML,注释,5,40,4,程序注释,1.5,简单的程序调试过程,第,1,章,C#,概述,41,1.5,简单的程序调试过程,在开发应用程序的过程中,尤其当程序出现错误或者未得到预期的结果时,经常需要进行调试,以便找出问题所在。,作为一个优秀的集成开发环境,,VS2012,在调试方面的功能也非常强大,,VS2012,的调试器可以以高度可视化的方式显示调试中的程序信息,还可以设置条件断点。,42,1.5,简单的程序调试过程,新建一个控制台应用程序,其中,Main,方法如下:,static void Main(string args),int a;,a=1;,Console.WriteLine(a);,a=2;/,断点处,Console.WriteLine(a);,a=3;,Console.WriteLine(a);,43,1.5,简单的程序调试过程,44,图,1-15,添加断点,图,1-16,程序执行到断点处暂停,1.5,简单的程序调试过程,断点的作用是程序执行到断点处时暂停,按下,F5,,程序在断点处暂停。,黄色箭头和黄色背景代表将要执行的下一条语句,由于,a=2;,语句还没有被执行,所以局部变量窗口处,a,的值仍然为,1,。,如果想单步执行,需按下,F11,或者,既可以单步执行直到程序运行结束,也可以按下,直接停止调试。,45,第,1,章,C#,概述,谢谢!,第,2,章,C#,语法基础,第,2,章,C#,语法基础,2.1,数据类型,2.2,变量和常量,2.3,语句,2.4,随机数,2.5,应用实例:斗地主发牌模拟,第,2,章,C#,语法基础,2.1,数据类型,2.1,数据类型,数据,是程序处理的基本对象,编写程序的本质是对数据进行处理并获取结果。数据都是以某种特定的形式存在的,如整数、字符串等。,在,C#,中,根据数据的内容和存储方式,可以把数据分为,两大类,值类型,引用类型,2.1,数据类型,2.1.1,值类型,2.1.2,引用类型,2.1.3,类型转换,2.1.1,值类型,值类型用来表示实际存在的数值,如数学中的整数和小数在,C#,中对应表示为整型数据和浮点型数据。,在,C#,中,包含以下值类型数据。,1.,整型,2.,浮点型(又称实型),3.,字符型,4.,布尔类型,5.,结构类型,6.,枚举类型,1,浮点型,整型指不包含小数部分的数字,包含正整型、负整型和,0,共三类数字。,C#,中将整型数据分为,8,类,如表所示。,数据类型,类型标识符,字节数,数值范围,字节,sbyte,1,-128127,之间的整数,无符号字节,byte,1,0255,之间的整数,短整型,short,2,-3276832767,之间的整数,无符号短整型,ushort,2,065535,之间的整数,整型,int,4,-21474836482147483647,之间的整数,无符号整型,uint,4,04294967295,之间的整数,长整型,long,8,-9223372036854775808,9223372036854775807,之间的整数,无符号长整型,ulong,8,018446744073709551615,之间的整数,2,浮点型(又称实型),浮点数,float,(单精度),,在浮点数后添加一个小写,f,或者大写,F,作为后缀。,double,(双精度),,不需要添加后缀,。,十进制小数,decimal,,,在数字后面应添加小写,m,或者大写,M,作为后缀,。,数据类型,类型标识符,字节数,数值范围,单精度实数,float,4,双精度实数,double,8,十进制实数,decimal,16,3,字符型,字符型数据用来处理,ASCII,字符和,Unicode,编码字符,可存储,065535,之间的整数。字符型数据类型标识符为,char,。,在处理一些特殊字符时,如处理单引号自己“,”,需要在字符前添加转义字符单斜杠“,”进行处理。,转义符,作用,转义符,作用,单引号,双引号,斜杠,0,空字符,a,警报,b,BackSpace,回退,f,换页符,n,换行符,r,回车,t,水平制表符,u,Unicode,转义序列,U,代理项对的,Unicode,转义序列,v,垂直制表符,x,类似于,u,,但长度可变,4,布尔类型,布尔类型数据就是逻辑型数据,类型标识符为,bool,,用来表示逻辑真和逻辑假,其值只有,true,和,false,。,【注意】,很多编程语言中(如、,+,)都可以用,1,表示逻辑值,true,,用,0,表示逻辑值,false,,但是在,C#,中声明为,bool,类型数据时,不能用,1,(,0,)替代,true,(,false,),否则会报错。,5,结构类型,前面介绍的四种类型为基本数值型数据,除了这四种基本数据类型以外,在程序中,经常需要管理一些复杂数据,比如包含多个简单类型数据的一组数据。,结构类型数据就是,C#,中一种特殊的数据类型,它本身不是一个数值或一个字符,而是可包含多种不同类型数据并自定义其类型名称的一种数据类型。,使用结构类型时,可将不同类型数据作为一个整体进行管理,实现数据的结构化。,5,结构类型,例如,在学生管理系统中,将学生的姓名、学号和性别作为一个整体结构进行处理,将一个学生作为该结构的数据元素进行定义,。,/,声明结构类型,public,struct,students /struct,指定结构体类型,,students,为类型名,public string name,;,/,结构体成员,name,,为字符串类型,public char sex;/,结构体成员,sex,,为字符类型,public int num;/,结构体成员,num,,为整型,/,用结构类型,students,定义数据,students stu1;,/,为结构中所有成员赋值,stu1.name=”,张三,”;,stu1.sex=,男,;,stu1.num=201701;,6,枚举类型,枚举类型也是一种复杂数据类型,主要用于表示一组逻辑上相关联的项的组合,为简单类型的数值提供别名表示,使用关键字,enmu,来定义。,最典型的事例是用枚举类型枚举星期,定义方式为:,/,定义枚举类型,enum,Weekday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,;,/,用枚举类型定义变量,Weekday w1;,/,给枚举变量赋值,其值只能为枚举元素,w1=,Weekday.Monday,;,2.1.2,引用类型,在程序中,对于定义的变量,值类型数据存储的是变量本身的,值,,在引用类型数据中,存储了存放该变量的,地址值,。,C#,的引用类型主要包括数组(,array,)、类(,class,)、接口(,interface,)、委托(,delegate,)以及内置引用类型,object,和字符串(,string,)。,关于类、接口和委托的部分会在后面章节里详细介绍,这里主要介绍数组类型和字符串类型数据。,1.,数组,数组是一种特殊的数据结构,其作用是将一批,类型相同,的数据元素进行,有序,的集合和管理。,数组,中的元素存储在一段连续的内存块中,每个元素对应唯一的索引,可根据数组名和元素索引值(下标值)访问其中的某一个数组元素。,数组包括,:,(,1,),一维数组,(,2,),多维数组,(,1,)一维数组,C#,中采用下列方式声明数组:,baseType,arrayName,;,其中,,baseType,指定数组的数据类型,它可以,是,任意的变量类型,如前面介绍的整型、结构型等。,在使用数组前,需要进行初始化操作,可使用,new,关键字,进行数组对象的实例化操作。,定义一个包含,5,个元素的整型数组并进行初始化操作:,int array=,new,int5;,(,1,)一维数组,也可以在创建数组时对元素进行赋值,通过确定的元素值,可以确定数组元素的个数,如:,int array=5,10,20,12,30;,引用数组的某一个元素时,使用,数组名,元素索引,的方式,元素索引值从,0,开始,如果一个数组的长度为,n,,则索引范围是,0,(,n-1,),。,例如需将上述数组中第三个元素的内容读入一个整型变量中,则应表示为:,int a;,a=array,2,;,读取,a,的值为,20,(,2,)多维数组,在定义一维数组时只指定了一个下标值,即指定了数组长度,每个数组元素只有一个值。如果一个数组中的每一个元素都是由,n,个该数据类型的数据所构成,则称该数组为二维数组;以此类推。,定义多维数组时,需要在方括号内添加逗号“,”,以确认数组的维度,然后再赋值或者定义元素数量,以二维数组为例,定义并初始化方式为:,baseType,arrayName,=new,baseType,N1,,,N2;,(,2,)多维数组,例如,定义一个有,5,个元素的二维数组,要求每个元素包含,3,个整型变量,则,int,intArray,=new int5,3;,在理解上,可以想象二维数组的第一维度是行,第二维度是列,则上述定义了一个总共有,5,行,每行上有,3,个整型元素的二维数组。,(,2,)多维数组,在对二维数组赋值时,需要将每个包含有多个数据的元素用大括号,“,”,括起来,例如:,char,chArray,=a,b,张,李,0,,,1;,表示定义了一个字符类型的二维数组,总共有三行元素,每行又包含两个数据。,在访问二维数组的某个数据时,需要提供,行,和,列,上的两个索引值来指定元素的位置,如:,char c;,c=,chArray,1,0;,字符,c,的值是,张,。,2,字符串,在值类型数据中,用,char,类型定义一个字符,如果是多个字符的集合,则使用字符串类型定义。字符串类型是,C#,中最简单的引用类型数据,类型关键字是,string,。,在书写字符串类型数据时,需要在字符串引用两侧添加双引号“,”,”,。,string,str=,”,Hello C#!,”,;,对于,string,类型数据,可以看作,char,类型的只读数组,可以使用下列方式访问,string,数据中的某个字符:,string str=”Hello C#!”;/,定义字符串变量,char,ch,=str4;/,将字符串的索引值为,4,的字符赋值给字符变量,ch,string,类型数据的索引值从,0,开始,所以,,ch,=o,。,1,隐式转换,在程序执行过程中,不同类型的数据往往需要进行类型转换,以期望程序正确执行。在,C#,语言中,类型转换有两种形式:,隐式转换,和,显示转换,。,1.,隐式转换,对于值类型数据而言,数据类型,A,到数据类型,B,的转换可以在任意状况下进行,由编译器直接执行转换规则,称之为隐式转换。,所以隐式转换的规则是,由,数值范围小,的数据类型向,数值范围大,的数据类型转换,。,2,显示转换,2.,显示转换,明确需要将数据类型转换为特定的数据类型,则是显示转换。该操作需要编写额外的代码实现。,根据数据类型不同,可采用下列几种方式进行显示转换,。,(,1,),强制类型转换,(,2,),使用,Convert,命令进行显示转换,(,3,)使用,ToString,方法转换,2,显示转换,(,1,),强制类型转换,转换格式:(类型名)(表达式),表示将表达式强制转换成括号类指定的类型。,如果要将一个对象类型显示转换为值类型数据,或将一个接口类型显示转换为执行该接口的值类型数据,也会用到强制类型转换的方式,称之为,拆箱,操作。,(int)x;/,将,x,强制转换成整型,(float)(5/3);/,将,5/3,的值强制转换成单精度实数,int,intData,=10;/,定义整型变量,intData,object,objData,=,intData,;/,装箱,int intData2=(int),objData,;/,拆箱,将,objData,对象强制转换成,int,类型,2,显示转换,(,2,),使用,Convert,命令进行显示转换,命令方式,转换方式,Convert.ToBoolean,(value),将,value,值转换为,bool,类型,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),将,value,值转换为,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,方法转换,如果想将其他类型数据转换为字符串类型,大多数都可以使用类型自带的,ToString,(),方法,其通常用于将变量转换为字符串类型数据。,例如:,int a=3;/,定义整型变量,a,,初始值为,3,string s=,a.ToString,();/,将整型变量,a,的值转换为字符串赋值给字符串类型变量,s,第,2,章,C#,语法基础,2.2,变量和常量,2.2,变量和常量,变量和常量是在所有编程语言中都非常重要的一个概念,在前面部分也经常被提到。,在程序执行过程中,其值可以发生改变的量称为,变量,,需要定义数据类型、名称并存放在内存空间里。,而值不能发生改变的称为,常量,,比如,12,,,10,都是整型常量,2.2,变量和常量,2.2.1,变量,2.2.2,常量,2.2.1,变量,在编写程序过程中,变量需要,先声明在使用,。声明时,要指定变量的名称和数据类型。变量声明方式是:,type name;,/type,指定数据类型,,name,指定变量名表列,int a;/,声明一个整型变量,a,char ch1,ch2;/,声明两个字符变量,ch1,,,ch2,bool b;/,声明一个布尔类型变量,b,每个变量都有一个自己的名称,其命名规则符合标识符的命名规则,只能由,字母,、,数字,和,下划线,3,种字符组成,且第一个字符必须是字母或下划线,但变量名不可以和,C#,语言关键字或类名相同。,2.2.1,变量,在声明变量时需要进行初始化变量值的操作,也可以在程序执行过程中不断的修改变量存储的值,以下方式都可以对变量进行赋值,。,变量只有在赋值后才能使用,赋值时要根据变量的类型来进行赋值,。,int a=10;/,声明整型变量,a,并赋值,int a;a=10;/,声明整型变量,a,,再通过赋值语句对,a,赋值,2.2.2,常量,在编程过程中,值不会改变的量称为常量,。,在,C#,中可以用,const,关键字定义符号表示常量。,常量也可以看作是变量的一种特殊情况,在内存中只能被读取,不能被修改。使用,const,关键字定义常量格式为:,const Type,ConstantName,;,/Type,指定类型,,ConstantName,指定常量名,例如,定义单精度实数,Pi,表示圆周率,const float Pi=3.1415926 f;,第,2,章,C#,语法基础,2.3,语句,2.3,语句,程序中,,语句是执行操作的命令,,比如对变量进行赋值操作,处理数据时进行的运算操作,比较两个数据关系时的比较操作,存储结果操作等等。,在,C#,中,任何语句都必须以,分号“,;,”,终止,否则语句不能被编译。,我们分别从表达式语句、流程控制语句和异常处理语句来介绍,C#,的语句。,2.3,语句,2.3.1,表达式语句,2.3.2,流程控制语句,2.3.3,异常处理语句,2.3.1,表达式语句,表达式语句是,C#,程序中最基本的语句,在介绍表达式语句以前,需要先了解一下,C#,中的表达式。,由操作数和运算符组成的序列称之为表达式,包括算术运算表达式、赋值运算表达式、关系运算表达式、逻辑运算表达式等。,1,算术运算和算术运算语句,算术运算是最基本的数据运算,主要用于实现数学运算功能,算术运算只能处理整型数据和实型数据。,C#,支持的算术运算符包括以下,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-,,,-n,1,算术运算和算术运算语句,【,说明,】,除法运算时,两个整数相除的值为整数,系统会舍去小数部分。当整数与实数参与除法运算时,系统会自动把整数、单精度实数都按,double,类型数据处理。,取模运算中,只能是两个整数参与运算,取相除后的余数。如,,8/5=1,,,8%5=3,,注意区分两种运算过程。,在自增自减运算中,自增自减运算符可以以前缀方式或者后缀方式进行运算,。,2,赋值运算和赋值运算语句,赋值运算是将一个数据(表达式)的值赋值给一个变量,赋值运算符为,“,=,”,,由赋值运算符和一个表达式连接在一起的式子称为“赋值表达式”,表达式后加上分号构成赋值语句。,赋值运算是,右结合性,,即按“自右向左”的方向结合运算,所以“,a=,(,b=5,)”与“,a=b=5,”等价。,在给变量进行赋值时,以最后的赋值为准。,C#,也支持,复合赋值运算,,如,+=,、,-=,、*,=,、,/=,、,%=,。,3,关系运算,关系运算符分为以下几类:,(,1,)基本比较运算符,用于比较两个表达式的大小关系,如果满足关系,表达式返回逻辑真值,true,,否则返回逻辑假,false,。常见比较运算符有:,=,、,!=,、,、,、,=,(,2,)类型比较运算,is,运算符用于判断对象是否属于某个类的实例,如果是,返回,true,,否则返回,false,。,as,运算符用于在兼容的引用类型中执行某些类型的转换,其只执行引用转换和装箱转换,不执行用户自定义转换。,4,逻辑运算,逻辑运算是针对逻辑型数据判断其逻辑结果的一种运算,用逻辑运算符和表达式构成的式子称之为逻辑表达式,其返回值为逻辑值,逻辑运算表达式也多用于条件判断结构中,,C#,中有以下逻辑运算符:,&,:逻辑与运算符,若运算符两侧的表达式值都为真(,true,)时,则逻辑运算表达式值为真,|,:逻辑或运算符,若运算符两侧的表达式中包含真(,true,)值时,则逻辑运算表达式值即为真,!,:逻辑非运算符,对某个表达式进行取反操作,若表达式为真,则逻辑运算表达式值为假,5,按位运算,(,1,)按位逻辑运算,指将整数转换为二进制形式,将每一个数位上的,0,视为逻辑假(,false,),数位上的,1,视为逻辑真(,true,),再进行逻辑运算。按位逻辑运算有以下四种运算符:,&,、,|,、,、,。,(,2,)按位位移运算,指二进制数的数位位置进行移动操作的运算。,C#,中提供左移运算和右移运算两种按位位移运算符。左移运算符,是,。,(,3,)按位赋值运算,类似于赋值运算中的复合赋值运算的形式,按位赋
展开阅读全文