第3讲--c#语言基础.ppt_第1页
第3讲--c#语言基础.ppt_第2页
第3讲--c#语言基础.ppt_第3页
第3讲--c#语言基础.ppt_第4页
第3讲--c#语言基础.ppt_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

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

文档简介

第三章,数据类型,2/44,回顾,Pascal和Camel命名法类和对象C#的Main方法Console.WriteLine()方法,3/44,工作任务,4/44,本章目标,使用C#中的基本数据类型理解装箱和拆箱的概念,5/44,3.1类型概述,C#语言中的每一个类型都直接或间接派生于object类型,即object类型是C#语言所有类型的最终基类型。,6/44,C#的基本数据类型3-1,C#中的数据类型分为两个基本类别值类型表示实际数据只是将值存放在内存中值类型都存储在堆栈中int、char、结构引用类型表示指向数据的指针或引用包含内存堆中对象的地址为null,则表示未引用任何对象类、接口、数组、字符串,7/44,值类型和引用类型细分,8/44,3.2值类型,值类型包括结构类型、枚举类型、布尔类型、自定义结构类型、sbyte、byte、char、short、ushort、int、uint、long、ulong、float、double和decimal类型。值类型的变量直接包含其数据,其值不可能为null。,9/44,3.2.2整数类型,整数类型包括9种类型,如sbyte、byte、short等。它们的具体说明、.NETFramework中的名称和取值范围如表3.1所示。1int类型2long类型3char类型,10/44,3.2.3浮点型,C#语言包括两种浮点型:float和double。float类型表示32位的单精度浮点数,它的取值范围为1.5e-453.4e38。double类型表示64位的双精度浮点数,它的取值范围为5.0e-3241.7e308。浮点数包括以下3种特殊的值。正零和负零正无穷大和负无穷大非数字(Not-a-Number)值书写时在数字后加f和d区分。,11/44,3.2.4decimal类型,decimal类型表示128位的数值,取值范围为1.0e-287.9e28,特别适用于财务计算和货币计算。在书写decimal类型的值时,需要在数值后添加后缀m,否则编译出错。在浮点型和decimal类型之间不存在隐式转换。如果要转换浮点型到decimal类型,则必须使用强制转换方法。,12/44,3.2.5bool类型,bool类型表示布尔逻辑量。它只包含两个值:true和false,而且这两个值意义恰好相反。,13/44,数据类型-2,14/44,3.2.6枚举类型,枚举(enum)类型也是一种值类型,它具有命名常量的独特的类型。枚举类型一般包含一个或多个枚举值,每一个枚举值之间用逗号(,)分隔。枚举值又称为枚举数,它的默认基础类型为int。默认情况下,第一个枚举数的值为0,后面的每一个枚举数的值依次增1。,15/44,什么是枚举,用一种新的类型定义enum,publicenumGendersMale,Female/性别privateGendersgender;publicGendersGendergetreturngender;setgender=value;,这样给属性赋值:student.Gender=Genders.Male;,如果这样属性赋值:student.Gender=ACCP;,类型不同不能赋值,性别属性的类型,Genders是一个枚举类型,代码错误,16/44,枚举定义,枚举是一组描述性的名称枚举定义一组有限的值,不能包含方法对可能的值进行约束枚举允许描述性名称表示整数值,访问修饰符enum枚举名值1,值2,publicenumAccpS1,S2,Y2,我们不会输入S3,Y3,publicenumAccpS1=1,S2=2,Y2=3/Console.WriteLine(S2的整数值是0.,(int)(Accp.S2);,枚举表示的整数值取得方法,17/44,枚举的特点,汽车类有一个成员是车身颜色,使用时,必须了解数组的构成,枚举可以用描述性的名称表示值,使用时无需了解它的构成,privateenumcolorred,write,blackstaticvoidMain(stringargs)Console.WriteLine(我要选择的颜色是:0,color.red);,枚举,18/44,枚举的典型应用,DialogResultchoice;choice=MessageBox.Show(确定要退出吗?,退出系统,MessageBoxButtons.OKCancel,MessageBoxIcon.Information);if(choice=DialogResult.OK)Application.Exit();,DialogResult是个枚举,指示对话框的返回值,这样我们就不会判断一些非法的值,导致系统异常,19/44,3-3引用类型,引用类型包括类(class)、接口(interface)、数组、委托(delegate)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)根类。一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型分两步创建:首先在堆栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。,20/44,3-3引用类型,string类型是一个从object类直接继承的类型。例如:strings1,s2;s1=ABCD;s2=s1;其中,s1,s2是指向字符串的引用变量,s1的值是字符串“ABCD”存放在内存的地址,这就是对字符串的引用,两个引用型变量之间的赋值,使得s2、s1都是对“ABCD”的引用。如图2.2所解。,堆内存,栈内存,ABCD,s1,s2,图2.2引用类型赋值示意,21/44,装箱和拆箱2-1,装箱是将值类型转换为引用类型拆箱是将引用类型转换为值类型利用装箱和拆箱功能,可通过允许值类型的任何值与Object类型的值相互转换,将值类型与引用类型链接起来,22/44,装箱和拆箱2-2,intval=100;objectobj=val;val=val+10;Console.WriteLine(“对象的值=0,obj);,intval=100;objectobj=val;val=val+10;intnum=(int)obj;Console.WriteLine(num:0,num);,值类型,引用类型,拆箱,装箱,值类型,引用类型,值类型,被装过箱的对象才能被拆箱,23/44,2.1.3值类型与引用类型关系,实例的装箱操作说明如图2.3所示。,图2.3装箱机制,24/44,2.1.3值类型与引用类型关系,注意:当一个装箱操作把值类型转换为一个引用类型时,不需要显示地强制类型转换;而拆箱操作把引用类型转换到值类型时,由于它可以强制转换到任何可以相容的值类型,所以必须显示地强制类型转换。,25/44,4.7变量转换,变量转换(variableconversion)使一种类型的变量可以被视为另一种类型。转换可以分为隐式转换(implicitconversion)和显式转换(explicitconversion)。,26/44,为什么需要类型转换,编译器要确切地知道数据的类型,intnum=123;,整数,字符串,需要类型转换!,编译出错,27/44,怎样进行隐式类型转换,隐式转换:自动类型转换,float,int,规则:对于数值类型,A的取值范围完全包含在B内,A,B,28/44,staticvoidMain(stringargs)doublescore=58.5;/原始成绩intbonus=2;/加分intsum;/总分sum=score+bonus;/计算总分Console.WriteLine(sum);Console.ReadLine();,怎样进行显式类型转换,staticvoidMain(stringargs)doublescore=58.5;intbonus=2;intsum;sum=(int)score+bonus;Console.WriteLine(sum);Console.ReadLine();,明确告诉编译器转换类型注意:double(58.5)-int(58),精度可能丢失!,显式转换:强制类型转换,29/44,使用Parse()进行转换,字符串和数值型的互相转换,int,float,double,string,int.Parse(),float.Parse(),double.Parse(),ToString(),必须是数字的有效表示形式!,30/44,使用Convert类进行转换,使用Convert:Convert.ToXxx(objectvalue),Convert.ToInt32(),Convert.ToSingle(),Convert.ToString(),double85.63,string85.63,int86,float85.63,演示示例7:不同类型的相互转换,31/44,Parse与Convert,Xxx.Parse(string),目标类型的有效表示形式,Convert.ToXxx(object):,注:Xxx表示某种类型,字符串,其他类型,任意类型,其他类型,32/44,小结,类型转换有几种方式?,stringmyString=Hello;intmyInt=int.Parse(myString);,doublescore=59.3;intmyInt=Convert.ToInt32(score);,doublescore=92.6;stringmyString=score.ToString();,错误!字符串不是有效的整数形式,转换成功!myString为92.6,转换成功,但精度丢失!myInt为59,下面各种转换的结果是什么?,33/44,异常处理,异常:在运行时发生的错误异常处理:预知可能发生的异常,在程序中编码处理,34/44,如何处理异常2-1,使用trycatch块捕获和处理异常,tryconnection.Open();/connection.Close();catch(处理的异常类型)/错误处理代码,处理异常的代码,出现异常,跳到catch否则正常向下执行,出现异常,跳转,连接关闭语句将不被执行,包含可能出现异常的代码,35/44,如何处理异常2-2,finally块无论是否发生异常,都会执行,try/catch(处理的异常类型)finally,可能出现异常的代码,处理异常的代码,是否发生异常数据库连接都会关闭,必须执行的语句放在finally中,无论如何都会执行的代码,36/44,小结,如果try中没有出现异常,显示哪几个消息框?,try/可能出现异常的代码MessageBox.Show(try块);catch(Exceptione)MessageBox.Show(catch块);finallyMessageBox.Show(finally块);,显示,显示,不显示,37/44,运算符-1,运算符是一种符号,这种符号对一个或多个操作数执行的某种运算,并且产生一个结果大多数运算符是二元运算符,只有几个一元运算符和一个三元运算符,38/44,运算符-2,39/44,运算符-3,40/44,运算符-4,把运算符放在表达式的前面称为前置,把运算符放在表达式的后面称为后置。它们的执行有所不同增量或减量运算符可以作用于整个表达式,也可以作用于表达式的内部:+xx+,41/44,运算符-5,三元运算符需要3个操作数,格式如下:condition?true_value:false_valuecondition是要计算的bool

温馨提示

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

最新文档

评论

0/150

提交评论