C#第3章常量、变量与方法.ppt
《C#第3章常量、变量与方法.ppt》由会员分享,可在线阅读,更多相关《C#第3章常量、变量与方法.ppt(45页珍藏版)》请在装配图网上搜索。
高级编程技术VisualC#.NETProgramming,聊城大学理工学院曹银杰caoyinjie,第三章常量、变量与方法,3.1数据类型3.2常量3.3变量3.4复杂的变量类型3.5方法3.6数据类型转换,3.1数据类型,数据是程序处理的对象。不同数据类型其存储形式、取值范围、所能进行的运算是不同的。把数据分成不同数据类型可提高计算机存储、运算效率。C#中数据类型就是类,由其声明的常量、变量就是类的对象。所以声明的数据就有了属性、方法和事件成员。本节内容:1、C#两种数据类型2、C#数据类型与.net数据类型的对应3、数据类型使用举例,1、C#两种数据类型,C#中的数据类型分为两个基本类别值类型表示实际数据只是将值存放在内存中值类型都存储在堆栈中如int、char、结构类型对一个变量的操作不影响另一个变量引用类型表示指向数据的指针或引用包含内存堆中对象的地址为null,则表示未引用任何对象如类、接口、数组、字符串类型对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象,C#两种数据类型,delegateD(.)形式的用户定义的类型,委托类型,一维和多维数组,例如int和int,数组类型,string,Unicode字符串,interfaceI.形式的用户定义的类型,接口类型,classC.形式的用户定义的类型,所有其他类型的最终基类:object,类类型,引用类型,structS.形式的用户定义的类型,结构类型,enumE.形式的用户定义的类型,枚举类型,布尔型:bool,28位高精度十进制小数:decimal,IEEE浮点型:float,double,Unicode字符:char,无符号整型:byte,ushort,uint,ulong,有符号整型:sbyte,short,int,long,简单数据类型U-unsignedS-signed,值类型,说明,类别,整型,浮点型,2、C#数据类型与.net数据类型的对应,.NET的CTS(公共类型系统)规定了类型必须如何定义才能被CLR承载,包括(Class)类、(interface)接口、(structure)结构、(enumeration)枚举、(delegate)委托。C#的数据类型没有内置于语言中,而是内置于.NET中,C#支持的13个预定义值类型与CTS数据类型对应:,C#数据类型与CTS类型对应,C#支持两个预定义的引用类型,3、数据类型使用举例,数值类型:inttheInteger=10;doubletheDouble=3.14159;bool类型:只有true和false值,C#中bool值和整数值之间不能相互转换。booltheLogic=true;char型变量存储的是以Unicode(表示多个国家的国际字符集)方式编码的字符,占用两个字节,可表示65536种不同的字符,可以直接在一个char型变量中存储一个汉字的编码。用单引号围起来,例:chartheChar=c;charChineseCharacters=字;,数据类型使用举例,string类型:是Unicode字符串,是一个引用类型。把一个字符串赋给另一个字符串时,就会得到对同一内存空间内字符串的两个引用。修改一个字符串,就是创建一个全新的string对象。转义序列符号“”应用:单引号、双引号“、反斜杠、警告a、换行n、回车r、水平制表符t。转义序列符号“”:在字符串前加上,该字符串所有字符都被看作原来的含义。例:stringtheString=“thestring!”;stringpath=“c:abc.txt”;等价下一句stringpath=“c:abc.txt”;,3.2常量,常量就是在程序运行过程中其值不改变的量。类和结构可以将常数声明为成员。C#常量的数据类型有多种如:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string等等。常量分为直接常量、符号常量、固有常量:1、直接常量:程序中直接使用的数据常量。2、命名常量:用一个自定义的符号名来代替数据常量。3、固有常量:.net提供的常量,如:Color.Red。4、命名规则与命名约定,1、直接常量,直接常量是直接以值的形式表示的常量值,通常在值后加上后缀以说明值的数据类型。例:,2、命名常量,命名常量用关键字const声明并初始化,语法:修饰符const数据类型符常量名=常量表达式;常量名要符合命名规则与命名约定;修饰符:public、private。例:publicconstintA=1,B=3;一个常量可以依赖于另一个命名常量,但不能形成循环依赖,例:classConstExamplepublicconstintA=1;publicconstintB=A+2;/如果上面A=B+1形成了循环依赖就会出错,3、固有常量,System-definedconstants系统定义的常量,Declaredinsystemclasslibraries在系统类库中声明。Specifyclassnameorgroupnameandconstantname指定常量名及其所在的类名或组名,Example:Color.Redistheconstant“Red”intheclass“Color”,Color.Red是Color类中的Red常量;Color.Blue、Color.Yellow等,4、命名规则与命名约定,常量、变量命名规则:名称的第一个字符必须是字母、下划线”_”或”,其后的字符可以是字母、下划线或数字;名称中不能包含空格、句点等标点符号;名称不可以和关键字(保留字)同名;区分大小写。常量、变量命名约定:名称要有意义,最好不使用缩写;名称中包括数据类型;变量名称以小写字母开始,然后每个后继单词的首字母大写。常量使用大写的名称。,3.3变量,变量是指在程序运行过程中其值可以发生变化的量。1、变量的声明2、变量的作用域和生存期,1、变量的声明,声明变量语法如下:修饰符数据类型符变量名1=初值1,变量名2=初值2,;类级变量使用修饰符:public、private、static。变量在使用之前必须初始化(赋初值),否则将不能通过编译。合法命名:myBigVar,Var1,_test,myVar非法命名:99BottleOfBeer,switch,Its-All-Over,2、变量的作用域和生存期,变量的生存期:变量可以在某特定的时刻被创建,或在不再需要时被删除。在创建和删除之间所经过的时间,被称为变量的生存期。变量的作用域:是指可以使用该变量的代码区域。与声明位置有关,有命名空间级、类级、局部、块级。命名空间级变量(和常量):在本命名空间(一般是整个工程)的所有方法中使用,但良好的编程惯例不使用。,变量的作用域和生存期,类级变量:声明位置在窗体或类的顶部声明,用修饰符public、private声明,在该窗体或其他类的所有方法中使用;实例对象时分配空间,所在的对象被撤消了,该变量也就从内存中被清除了。,privatestaticintabcd;,静态变量:在类中使用static关键字声明的变量。在第一次实例对象时分配空间,对象被撤消时,静态变量仍然在内存中保存,下次再用时以此为初值。,变量的作用域和生存期,局部变量:声明位置在窗体或类所包含的方法内位置声明(第一次使用变量之前),只能该方法内使用。不能使用修饰符public、private与static。块级变量:声明位置在语句块(大括号范围内)内(第一次使用变量之前),只能该语句快内使用。如在for、while循环中声明的变量,只存在于该循环体。不能使用修饰符public、private与static。,3.4复杂的变量类型,复杂的变量类型:1、枚举enum2、结构struct3、数组,1、枚举,枚举变量是指将变量可能的取值一一列举出来,变量的值只限于枚举值之一。枚举用enum关键字来定义,语法如下:enumtypeNamevalue1,value2,value3,默认情况下,枚举类型中的每一个值是int类型值。枚举类型中的值还可以是byte,sbyte,short,ushort,uint,long和ulong数据类型。默认情况下,从0开始自动赋值;可使用“=”运算符来可以改变枚举元素的值。,枚举,枚举是一个用户定义的数据类型,使用时需再声明这个枚举类型的变量。语法如下:typeNamevarName;枚举变量赋值:varName=typeName.value2;,2、结构,结构是由几个不同类型的数据组成一种新的数据类型,结构体用关键字struct来定义,语法如下:struct包含变量结构数据成员的声明,每个成员的声明采用如下格式:;例:structroutepublicorientationdirection;publicdoubledistance;,结构,定义了结构类型之后,就可以定义该数据类型的变量:routemyRoute;通过“.”成员运算符可以访问该变量的数据成员,例:myRoute.direction=orientation.north;myRoute.distance=2.5;,3、数组变量,数组是同一数据类型的一组值的集合。数组属于引用类型,连续存放在堆内存中,这些变量均具有相同的名称、相同的数据类型,可以通过下标相互区分,每一个这样的变量我们把它称为数组元素。为数据处理带来很大方便。本节分别介绍:一维数组多维数组数组的数组,一维数组,一维数组只有一个下标的数组。数组使用前必须先声明和分配空间。一维数组的声明:数据类型元素个数n数组名称;数组名称与普通变量命名相同;元素个数n可省略,就是没指定数组大小;第一个数组元素下标0,一直到第n-1元素,共n个。例:stringnames;string10names;/从0到9共10个元素。一维数组的声明并初始化,也可不使用关键字new初始化,下列都是合法形式:stringweekDays=newstringSun,Mon,Tue,Wed,Thu,Fri,Sat;intarray1=newint51,2,3,4,5;/or:intarray2=newint1,2,3,4,5;/orintarray3=1,2,3,4,5;,一维数组,使用数组前必须初始化(赋值),可以先声明后初始化:intarray4;array4=newint1,2,3,4,5;/OK/array4=newint51,2,3,4,5;/OK/array4=1,2,3,4,5;/错误初始化形式引用一维数组元素的形式:数组名下标;与普通变量一样使用。例:intarray1=newint51,2,3,4,5;那么array1数组具有元素:array10值为1,array12值为2,.array14值为5。,多维数组,多维数组具有多个下标,多维数组中常用的是二维数组。声明、引用于一维数组类似。二维矩矩阵数组,每一行有相同的列数,语法:,;赋值类似于一维数组,但需用逗号分隔开下标。例:double,myArray=newdouble3,4;可以使用直接常量初始化。使用嵌套的花括号,用逗号分隔开。例如:double,myArray=1,2,3,4,2,3,4,5,3,4,5,6;引用方形二维数组元素的一般格式如下:数组名下标1,下标2,多维数组,多维数组:只需要更多的逗号来定义,语法:,;要访问多维数组中的每个元素,只需指定它们的下标,并用逗号分隔开即可。多维数组还有一种变长数组,也叫正交数组,其中每行可以有不同的元素个数。,数组的数组,声明数组的数组,例如:inta;初始化有两种方式:第一种可以先初始化包含其他数组的数组,然后再初始化子数组:a=newint3;a0=newint4;a1=newint3;a2=newint1;第二种方式是使用字面值赋值的一种改进形式:a=newint1,2,3,newint1,newint1,2;,3.5方法,1、方法的声明与定义2、方法的调用3、.net提供的Math类静态方法4、.net提供的时间日期DateTime类实例方法,1、方法的声明与定义,可以把程序中多次用到的某个任务定义为方法,可反复调用,提高代码复用率,提高编程效率。在VB、C和C+中,可以定义与类完全不相关的全局函数,但在C#中,方法必须在类中声明和定义,正式的C#术语并不区分函数和方法。C#方法分为两种:实例方法:处理类的某个实例,类实例化对象后才能使用,在类中用public或private声明。静态方法:不需(也不能)实例化即可使用,在类中用static声明。(例如Console.WriteLine()方法)。,方法声明与定义,方法的定义:修饰符返回值类型方法名(形式参数表)方法体;return(z);/返回结果z修饰符指定方法的访问权限,实例方法有public、private、默认为private,静态方法在修饰符后加static关键词;返回值类型就是前面介绍的数据类型,不返回值用void;形式参数表是传递给方法的参数,与调用时的实参一一对应。,举例,例如:一个求两个数中最大值的方法定义如下staticintMax(inta,intb)/方法定义intc;c=ab?a:b;returnc;,2、方法的调用,实例方法的调用,先要定义一个方法所在类的对象,并实例化;再通过对象调用方法,格式为:类名对象名=new类名(构造函数参数);对象名.方法名(实际参数表);静态方法调用格式为:类名.静态方法名(实际参数表);静态方法属于整个类,而不属于根据类生成的对象,如系统把很多数学函数,以静态方法形式封装成Math类包含到命名空间System中,共我们直接使用。我们也经常自定义一些静态方法。,3、.net提供的Math类静态方法,.net把常用数学常数、三角函数、对数函数和其他通用数学函数函数封装成Math类,包含到命名空间System中。Math类的所有方法和属性都是静态的,调用语法Math.method(parameter);或Math.constant;,Math类的静态方法,Math类的静态方法,4、时间日期DateTime类实例方法,System.DateTimecurrentTime=newSystem.DateTime();取当前年月日时分秒currentTime=System.DateTime.Now;取当前年int年=currentTime.Year;取当前月int月=currentTime.Month;取当前日int日=currentTime.Day;取当前时int时=currentTime.Hour;取当前分int分=currentTime.Minute;取当前秒int秒=currentTime.Second;取当前毫秒int毫秒=currentTime.Millisecond;(变量可用中文),时间日期DateTime类,取中文日期显示年月日时分stringstrY=currentTime.ToString(f);/不显示秒取中文日期显示_年月stringstrYM=currentTime.ToString(y);取中文日期显示_月日stringstrMD=currentTime.ToString(m);取中文年月日stringstrYMD=currentTime.ToString(D);取当前时分,格式为:14:24stringstrT=currentTime.ToString(t);取当前时间,格式为:2003-09-23T14:46:48stringstrT=currentTime.ToString(s);取当前时间,格式为:2003-09-2314:48:30ZstringstrT=currentTime.ToString(u);取当前时间,格式为:2003-09-2314:48stringstrT=currentTime.ToString(g);取当前时间,格式为:Tue,23Sep200314:52:40GMTstringstrT=currentTime.ToString(r);获得当前时间n天后的日期时间DateTimenewDay=DateTime.Now.AddDays(100);,3.6数据类型转换,有时需要把数据从一种类型转换为另一种类型,C#有隐式转换和显式转换两种方式。隐式转换:只要能保证转换值不会发生任何变化,就可以自动进行的转换。如只能从较小的整数类型隐式地转换为较大的整数类型,反之就可能出错。显式转换:为避免出错,通过一些方法实现类型转换:1、圆括号转换数据类型2、Convert类的静态方法转换数据类型3、数据类型的实例方法转换数据类型4、数据类型的静态方法转换数据类型,1、圆括号转换数据类型,圆括号()用于将操作数强制转换为给定的数据类型:(数据类型)操作数,2、Convert类的静态方法转换数据类型,Convert类的命名空间:System,将一个基本数据类型转换为另一个基本数据类型。Convert类转换数据类型的静态方法:ToBase64CharArray方法ToBase64String方法ToBoolean方法ToByte方法ToChar方法ToDateTime方法ToDecimal方法ToDouble方法ToInt16方法ToInt32方法ToInt64方法ToSByte方法ToSingle方法ToString方法ToUInt16方法ToUInt32方法ToUInt64方法,privatevoidbutton1_Click(objectsender,EventArgse)stringx=textBox1.Text;/doubley=double.Parse(x);doubley=Convert.ToDouble(x);MessageBox.Show(y.ToString();,3、数据类型的实例方法转换数据类型,常量与变量都是数据类型的实例化对象,拥有多种方法。如:转换字符串方法ToString(),语法:变量.ToString(“格式化字符”);/变量转换成字符串例:12345.ToString(“n”);/生成12,345.00串12345.ToString(“C”);/生成¥12,345.00串12345.ToString(“e”);/生成1.234500e+004串12345.ToString(“f4”);/生成12345.0000串12345.ToString(“x”);/生成3039(16进制)串12345.ToString(“p”);/生成1,234,500.00%串其他方法举例:测字符串长度方法Length()stringstr=“中国”;/定义str字串的变量intLen=str.Length;/Len是自定义变量,4、数据类型的静态方法转换数据类型,Parse()是数据类型的静态方法,作用与ToString()相反。数据类型转换函数Parse(),语法:数据类型.Parse(表达式);表达式值转换为指定的数据类型。,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 常量 变量 方法
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文