C#程序设计pp2.ppt

上传人:春哥&#****71; 文档编号:90589588 上传时间:2023-05-16 格式:PPT 页数:38 大小:2.84MB
返回 下载 相关 举报
C#程序设计pp2.ppt_第1页
第1页 / 共38页
C#程序设计pp2.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《C#程序设计pp2.ppt》由会员分享,可在线阅读,更多相关《C#程序设计pp2.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、nC#程序设计pp22.6控制台I/OC#C#基础概述基础概述1.1.NET平台介绍本章结构本章结构1.1.NET平台介绍2.4枚举1.1.NET平台介绍2.3流控制语句2.7编写高质量的C#代码2.1 变量2.2 预定义数据类型2.5数组 C#C#数据类型包括基本类型(类型中最基础的部分),如数据类型包括基本类型(类型中最基础的部分),如intint、charchar,floatfloat等,也包括比较复杂的类型,如等,也包括比较复杂的类型,如stringstring、decimaldecimal(十进制)等(十进制)等.作为完全面向对象的语言,作为完全面向对象的语言,C#C#中的所有数据类

2、型是一个真正的类中的所有数据类型是一个真正的类.根据在内存中存储位置的不同,根据在内存中存储位置的不同,C#C#中的数据类型可分为以下两类:中的数据类型可分为以下两类:1.1.值类型:值类型:该类型的数据长度固定,存放于该类型的数据长度固定,存放于栈栈内。内。2.2.引用类型:引用类型:该类型的数据长度可变,存放于该类型的数据长度可变,存放于堆堆内。内。C#C#的语法设计与的语法设计与C C和和C+C+很相似。本章很相似。本章主要介绍主要介绍C#C#程序设计基础知识,包括数据程序设计基础知识,包括数据类型、常量、变量和语句结构等。类型、常量、变量和语句结构等。C C#中中的的数数据据类类型型2

3、.1变量变量2.1.1变量的初始化变量的初始化2.1.2变量的作用域变量的作用域2.1.3常常 量量2.1变量变量2.1.1变量的初始化变量的初始化 在在C#C#中,使用变量的基本原则是:先定义,后中,使用变量的基本原则是:先定义,后使用。使用。C#C#中的变量命名规范如下:中的变量命名规范如下:(1 1)必须以字母或下划线开头;)必须以字母或下划线开头;(2 2)只能由字母、数字、下划线组成,不能包含空)只能由字母、数字、下划线组成,不能包含空格、标点符号、运算符,以及其他符号;格、标点符号、运算符,以及其他符号;(3 3)不能与)不能与C#C#关键字(如关键字(如classclass、ne

4、wnew等)同名。等)同名。C#对大小写是敏感的。对大小写是敏感的。2.1变量变量2.1.1变量的初始化变量的初始化C#中的变量以下列方式进行声明中的变量以下列方式进行声明:AccessModifier DataType VariablePublicPrivateProtectedintstringfloat2.1变量变量 变量的作用域是可以访问该变量的代码区域。一般情变量的作用域是可以访问该变量的代码区域。一般情况下,确定作用域有以下规则:况下,确定作用域有以下规则:(1)只要字段所属的类在某个作用域内,其字段只要字段所属的类在某个作用域内,其字段(又称成员又称成员变量变量)也在该作用域内。

5、也在该作用域内。(2)局部变量存在于声明该变量的语句块或方法结束的封局部变量存在于声明该变量的语句块或方法结束的封闭花括号之前的语句内。闭花括号之前的语句内。(3)在在for、while或类似语句中声明的局部变量存在于该或类似语句中声明的局部变量存在于该循环体内。循环体内。2.1.2变量的作用域变量的作用域2.1变量变量 大型程序在不同部分为不同的变量使用相同的变量名大型程序在不同部分为不同的变量使用相同的变量名是很常见的,只要变量的作用域是程序的不同部分,就不会是很常见的,只要变量的作用域是程序的不同部分,就不会有问题,也不会产生模糊性。但要注意,同名的局部变量不有问题,也不会产生模糊性。但

6、要注意,同名的局部变量不能在同一作用域内声明两次。所以下面的代码是错误的:能在同一作用域内声明两次。所以下面的代码是错误的:int x=20;int x=20;int x=30;int x=30;2.1.2变量的作用域变量的作用域局局部部变变量量的的作作用用域域冲冲突突2.1变量变量 在某些情况下,在某些情况下,C#C#可以区分名称相同可以区分名称相同(尽管其完全限定尽管其完全限定的名称不同的名称不同)、作用域相同的两个标识符。因为它把声明为、作用域相同的两个标识符。因为它把声明为类级的变量看做字段,而把在方法中声明的变量看做局部变类级的变量看做字段,而把在方法中声明的变量看做局部变量。此时编

7、译器允许声明第量。此时编译器允许声明第2 2个变量。个变量。2.1.2变量的作用域变量的作用域字字段段和和局局部部变变量量的的作作用用域域冲冲突突2.1变量变量v常量一旦初始化就不再发生变化,可以理解为符号化的常数。使用常量一旦初始化就不再发生变化,可以理解为符号化的常数。使用常量可以使程序变得更加灵活易读。常量可以使程序变得更加灵活易读。例如,可以用常量例如,可以用常量PI来代替来代替3.1415926,一方面程序变得易读,一方面程序变得易读,另一方面,需要修改另一方面,需要修改PI精度的时候无需在每一处都修改,只需在代精度的时候无需在每一处都修改,只需在代码中改变码中改变PI的初始值即可。

8、的初始值即可。v常量的声明和变量类似,需要指定其数据类型、常量名,以及初始常量的声明和变量类似,需要指定其数据类型、常量名,以及初始值,并需要使用值,并需要使用const关键字,例如:关键字,例如:public const double PI=3.1415;2.1.3常常 量量2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型和引用类型2.2.2预定义的值类型预定义的值类型2.2.3预定义的引用类型预定义的引用类型2.2预定义数据类型预定义数据类型值值值值类类类类型型型型引引引引用用用用类类类类型型型型2.2.1值类型和引用类型值类型和引用类型2.2预定义数据类型预定义数据类型

9、2.2.1值类型和引用类型值类型和引用类型C#内置的值类型是最基本的数据类型,内置的值类型是最基本的数据类型,例如整数、浮点数、字符、布尔类例如整数、浮点数、字符、布尔类型等。型等。1整数类型如整数类型如Int,Long,Short,Byte等等等等2浮点数类型浮点数类型float(float(占用:占用:4)(4)(精度:精度:7)7)double(double(占用:占用:8)(8)(精度:精度:151516)16)3.Decimal类型类型 该类型表示精度更高的浮点数。该类型表示精度更高的浮点数。4布尔型布尔型 C#的布尔型是的布尔型是bool,其取值包括,其取值包括True和和Fals

10、e5字符型字符型 Char(C#中统一采用Unicode字符集)值值类类型型2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型和引用类型值值类类型型 除上面介绍的简单值类型之外,用户还可以定义复合值类型。常用除上面介绍的简单值类型之外,用户还可以定义复合值类型。常用的复合值类型包括的复合值类型包括结构和枚举结构和枚举。结构属于值类型可以有方法可以拥有构造函数不能实现继承struct structEx public int structDataMember;public void structEx()/构造函数实现 public void structMethod1()/stru

11、ctMethod1 实现 结构和类的比较结构和类的比较结构存放在栈中并以值传递类存放在堆中并以引用传递6结构结构2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型和引用类型C#不允许在安全代码中使用指针,因此要处理堆中的数据就需要不允许在安全代码中使用指针,因此要处理堆中的数据就需要使用引用数据类型,使用使用引用数据类型,使用new关键字实例化引用数据类型的对象,并关键字实例化引用数据类型的对象,并指向堆中的对象数据。例如:指向堆中的对象数据。例如:Obj1 new Obj();Obj1即指向堆中的即指向堆中的Obj对象。对象。C#中常用的内置引用数据类型。中常用的内置引用数据

12、类型。1指针指针2数组数组3类、接口类、接口4.代理(委托)代理(委托)引引用用类类型型2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型和引用类型引引用用类类型型C#支持两个预定义的引用类型支持两个预定义的引用类型 object类型就类型就是最终的父类型,是最终的父类型,所有内在的和用户所有内在的和用户定义的类型都从它定义的类型都从它派生而来。这是派生而来。这是C#的一个重要特性。的一个重要特性。所有的类型都隐含所有的类型都隐含地最终派生于地最终派生于System.Object类类 string是一个引是一个引用类型,用类型,string对象对象保留在堆上,而不是保留在堆上,

13、而不是堆栈上,因此,当把堆栈上,因此,当把一个字符串变量赋给一个字符串变量赋给另一个字符串时,会另一个字符串时,会得到对内存中同一个得到对内存中同一个字符串的两个引用字符串的两个引用Object 和和 String Object是所有类的基类是所有类的基类,所以可以对所以可以对Object类的变量类的变量赋任何类型的值,例如,赋任何类型的值,例如,string类是专门对字符串操作类是专门对字符串操作的类的类,在在System名字空间中定名字空间中定义义(System.string),可以进,可以进行连接和获取字符操作行连接和获取字符操作。类类2.2预定义数据类型预定义数据类型2.2.1值类型和

14、引用类型值类型和引用类型引引用用类类型型string S1=Welcome!;string S2=NET AND C#;char c=S10;bool=(S1=S2);1.int i=10;2.string s=i.ToString();说明:说明:i是一个值类型数据,存放在栈是一个值类型数据,存放在栈内存中;内存中;s是一个引用类型的是一个引用类型的String对象,存放在堆中。对象,存放在堆中。装箱和拆箱装箱和拆箱2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型和引用类型引引用用类类型型装箱和拆箱装箱和拆箱2.2预定义数据类型预定义数据类型2.2.1值类型和引用类型值类型

15、和引用类型引引用用类类型型 在在C#类型系统中,任何值类型、引用类型和类型系统中,任何值类型、引用类型和Object类型之间进行转换:类型之间进行转换:装箱:将一个值类型隐含转换成Object类型;例:int i=10;object obj=i;注意:装箱的时候,被装箱的值拷贝一个副本赋给对象。拆箱:将对象类型显式地转换为一个值类型;例:i=(int)obj;2.2预定义数据类型预定义数据类型2.2.2预定义的值类型预定义的值类型值类型值类型有哪些?有哪些?整型整型整型整型布尔型布尔型布尔型布尔型浮点型浮点型浮点型浮点型字符型字符型字符型字符型2.2预定义数据类型预定义数据类型2.2.2预定义

16、的值类型预定义的值类型整型整型整型整型 C#C#支持支持8 8个预定义整数类型,有个预定义整数类型,有sbytesbyte、shortshort、intint、longlong、bytebyte、ushortushort、uintuint、ulongulong。注意注意:数据的十六进制表示方法为:数据的十六进制表示方法为0 x12ab0 x12ab,用,用0 x0 x作为前缀。对于某个整数,作为前缀。对于某个整数,如果没有显式声明其是如果没有显式声明其是intint、uintuint、longlong或是或是ulongulong类型,则该变量默认为类型,则该变量默认为intint类型。为了把输

17、入的值指定为其他整数类型,可以在数字后面加上如下类型。为了把输入的值指定为其他整数类型,可以在数字后面加上如下字符:字符:nuint ui=1234U;uint ui=1234U;nlong l=1234L;long l=1234L;nulong ul=1234UL;ulong ul=1234UL;n也可以使用小写字母也可以使用小写字母u u和和l l,但后者会与整数,但后者会与整数1 1混淆。混淆。2.2预定义数据类型预定义数据类型2.2.2预定义的值类型预定义的值类型 共有两种:共有两种:float float数据类型和数据类型和doubledouble数据类型。数据类型。float fl

18、oat数据类型用于较小的浮点数,因为它要求的精度较低。数据类型用于较小的浮点数,因为它要求的精度较低。doubledouble数据类型比数据类型比floatfloat数据类型大,提供的精度也大一倍数据类型大,提供的精度也大一倍(15(15位位)。如果在代码。如果在代码中没有对某个非整数值中没有对某个非整数值(如如12.3)12.3)硬编码,则编译器一般假定该变量是硬编码,则编译器一般假定该变量是doubledouble类型。如果想指定值为类型。如果想指定值为floatfloat类型,可以在其后加上字符类型,可以在其后加上字符F(F(或或f)f):float f=12.3Ffloat f=12.

19、3F。浮点型浮点型浮点型浮点型布尔型布尔型布尔型布尔型2.2预定义数据类型预定义数据类型2.2.2预定义的值类型预定义的值类型 布尔值和整数值不能相互转换。如果变量布尔值和整数值不能相互转换。如果变量(或函数的返回类型或函数的返回类型)声明为声明为布尔类型,就只能使用值布尔类型,就只能使用值truetrue或或falsefalse。如果试图使用。如果试图使用0 0表示表示falsefalse,非,非0 0值值表示表示truetrue,就会出错。,就会出错。字符型字符型字符型字符型2.2预定义数据类型预定义数据类型2.2.2预定义的值类型预定义的值类型 为了保存单个字符的值,为了保存单个字符的值

20、,C#C#支持支持charchar数据类型。数据类型。尽管尽管8 8位二进制数足够编码英语中的每个字符和数字位二进制数足够编码英语中的每个字符和数字0 09 9,但它们不,但它们不足以编码更大的符号系统中的每个字符足以编码更大的符号系统中的每个字符(如中文如中文)。为了面向全世界,计算。为了面向全世界,计算机行业正在从机行业正在从8 8位字符集转向位字符集转向1616位的位的UnicodeUnicode模式,模式,ASCIIASCII编码是编码是UnicodeUnicode的的一个子集。一个子集。char char类型的变量是用单引号括起来的,如类型的变量是用单引号括起来的,如AA。如果把字符

21、放在双。如果把字符放在双引号中,编译器会把它看做是字符串,从而产生错误。除了可以用引号中,编译器会把它看做是字符串,从而产生错误。除了可以用charchar表表示字符变量之外,还可以用示字符变量之外,还可以用4 4位十六进制的位十六进制的UnicodeUnicode值值(如如u0041)u0041)、带有数据类型转换的整数值带有数据类型转换的整数值(如如(char)65)(char)65),或十六进制数,或十六进制数(x0041)x0041)表示它们。表示它们。也可以把转义字符赋值给字符类型变量。也可以把转义字符赋值给字符类型变量。2.2预定义数据类型预定义数据类型2.2.3预定义的引用类型预

22、定义的引用类型object类型类型许多编程语言和类结构都提供了根(父)类型,层次结构中的其他对象都从根类型派生而来,C#和.NET也不例外。在C#中,object类型就是最终的父类型,所有内在的和用户定义的类型都从System.Object类派生而来。这是C#的一个重要特性。string类型类型C#有string关键字,在将其翻译为.NET类时,它就是System.String。有了它,进行字符串连接和字符串复制的操作就很简单了:string str1=Hello;string str2=World;string str3=str1+str2;尽管这是一个值类型的赋值,但string是一个引用

23、类型,String对象保留在堆上,而不是堆栈上,因此,当把一个字符串变量赋给另一个字符串时,会得到对内存中同一个字符串的两个引用。但是,string与引用类型在常见的操作上有一些区别。例如,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串没有改变。2.3流控制语句流控制语句2.3.1条条 件件 语语 句句2.3.2循循 环环 语语 句句 2.3.3跳跳 转转 语语 句句2.3流控制语句流控制语句 同其他高级语言类似,同其他高级语言类似,C#的程序结构主要有的程序结构主要有顺序结构、分支结构和循环结构,另外,顺序结构、分支结构和循环结构,另外,C#也支也支持无条件跳转。持无

24、条件跳转。与其他语言相比,这些结构在语法上有什么不同呢?与其他语言相比,这些结构在语法上有什么不同呢?2.3流控制语句流控制语句2.3.1条条 件件 语语 句句 if if语句是最常用语句是最常用的条件语句,通过的条件语句,通过判断布尔表达式的判断布尔表达式的值值,选择执行后面的选择执行后面的内嵌语句。内嵌语句。当程序面临多叉当程序面临多叉路口时,就可以使用路口时,就可以使用swtichswtich语句进行分支语句进行分支.条件语句条件语句2.3流控制语句流控制语句2.3.2循循 环环 语语 句句 while语句语句for语句语句循环语句循环语句while语句语句for语句语句dowhile语

25、句语句(略略)foreach语句语句(略略)当程序需要重当程序需要重复执行某种功能,复执行某种功能,直到达到某种条件直到达到某种条件才停止时,需要采才停止时,需要采用循环程序结构。用循环程序结构。同样用来实现同样用来实现循环结构,语法如循环结构,语法如下所示下所示:1.for(expression1;expression2;expression3)2.3.statement4.2.3流控制语句流控制语句2.3.3跳跳 转转 语语 句句 在循环中如果突然想结束循环时,需要使用跳在循环中如果突然想结束循环时,需要使用跳转语句转语句breakbreak或或continuecontinue语句。语句。

26、breakbreak语句不仅可以用在语句不仅可以用在switchswitch中,也可以用在循环语句中,用于中断循环,中,也可以用在循环语句中,用于中断循环,从循环中跳出。而从循环中跳出。而continuecontinue语句的作用在于,可以提语句的作用在于,可以提前结束一次循环过程中执行的循环体,直接进入下前结束一次循环过程中执行的循环体,直接进入下一次循环。一次循环。另外另外,还有,还有gotogoto语句、语句、returnreturn语句,请语句,请 参见课本本节内容。参见课本本节内容。2.4 枚举枚举 枚举(枚举(enumenum)其实是一个整数类型,用于定义一组)其实是一个整数类型,

27、用于定义一组基本整数数据,并可以给每个整数指定一个便于记忆的基本整数数据,并可以给每个整数指定一个便于记忆的名字。名字。枚举有什么优势?2.4 枚举枚举public class Holiday public enum WeekDays Monday,Tuesday,Wednesday,Thursday,Friday .public void GetWeekDays(String EmpName,WeekDays DayOff)/处理处理 WeekDays static void Main()Holiday myHoliday=new Holiday();myHoliday.GetWeekDay

28、s(Richie,Holiday.WeekDays.Wednesday);程序中声明了仅接受程序中声明了仅接受5 5个值的枚举类型个值的枚举类型WeekDays2.4 枚举枚举vC#中的中的枚举数枚举数都有与值相关联的数字都有与值相关联的数字v默认情况下,枚举数的第一个元素被指定为默认情况下,枚举数的第一个元素被指定为 0 值,后续的各个值,后续的各个枚举数元素的值依次递增枚举数元素的值依次递增v默认值可以在初始化阶段中重写默认值可以在初始化阶段中重写2.5 数组数组数组数组数组是一组相同的有序数据(C#中System.Array是所有数组的基类)声明:int arr,计算数组的元素的个数:arr.Length下标总0开始;DataTypenumber of elements ArrayName;int6 array1;2.6 控制台控制台I/O2.7 编写高质量的编写高质量的C#代码代码有关标识符的规则及用法约定,参见课本Page 44-46。C#基础概述

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁