C#第3章常量、变量与方法3H.ppt_第1页
C#第3章常量、变量与方法3H.ppt_第2页
C#第3章常量、变量与方法3H.ppt_第3页
C#第3章常量、变量与方法3H.ppt_第4页
C#第3章常量、变量与方法3H.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

高级编程技术 Visual C#.NET Programming 聊城大学 理工学院 曹银杰曹银杰 /zh-cn/library/default.aspx 第三章 常量、变量与方法 F3.1 数据类型 F3.2 常量 F3.3 变量 F3.4 复杂的变量类型 F3.5 方法 F3.6 数据类型转换 3.1 数据类型 F数据是程序处理的对象。不同数据类型其存储形式、取 值范围、所能进行的运算是不同的。把数据分成不同数 据类型可提高计算机存储、运算效率。 FC#中数据类型就是类,由其声明的常量、变量就是类的 对象。所以声明的数据就有了属性、方法和事件成员。 F本节内容: 1、C#两种数据类型 2、C#数据类型与.net数据类型的对应 3、数据类型使用举例 1、 C#两种数据类型 C#中的数据类型分为两个基本类别 F值类型 - 表示实际数据 - 只是将值存放在内存中 - 值类型都存储在堆栈中 - 如int、char、结构类型 - 对一个变量的操作不影响另一个变量 F引用类型 - 表示指向数据的指针或引用 - 包含内存堆中对象的地址 - 为 null,则表示未引用任何对象 - 如类、接口、数组、字符串类型 - 对于引用类型,两个变量可能引用同一个对象,因此 对一个变量的操作可能影响另一个变量所引用的对象 C#两种数据类型 delegate D(.) 形式的用户定义 的类型 委托类型 一维和多维数组,例如int和 int, 数组类型 string Unicode字 符串 interface I .形式的用户定 义的类型 接口类型 class C . 形式的用户定义 的类型 所有其他类型的最终基类: object类类型 引 用 类 型 struct S . 形式的用户定义 的类型 结构类型 enum E . 形式的用户定义 的类型 枚举类型 布尔型:bool 28位高精度十进制小数: decimal IEEE浮点型:float, double Unicode 字符:char 无符号整型:byte, ushort, uint, ulong 有符号整型:sbyte, short, int, long 简单数据 类型 U- unsigne d S-signed 值 类 型 说 明类 别 整 型 浮点型 2、 C#数据类型与.net数据类型的对应 F.NET的CTS(公共类型系统)规定了类型必须如何定义才能被 CLR承载,包括(Class)类、(interface)接口、(structure) 结构、(enumeration)枚举、(delegate)委托。 FC#的数据类型没有内置于语言中,而是内置于.NET中,C#支 持的13个预定义值类型与CTS数据类型对应: C#类型 CTS类型 允 许 的 值 sbyteSystem.SByte在 -128 127 之间的整数 byteSystem.Byte在 0 255 之间的整数 shortSystem.Int16在 -32768 32767 之间的整数 ushortSystem.UInt16在 0 65535 之间的整数 intSystem.Int32在 -2147483648 2146483647 之间的整数 uintSystem.UInt32在 0 4294967295 之间的整数 longSystem.Int64 在 -9223372036854775808 9223372036854775807 之间的整数 ulongSystem.UInt64在 0 18446744073709551615 之间的整数 C#数据类型与CTS 类型对应 C#类型 CTS 类 型允 许 的 值 floatSystem.Single 1.510-453.41038 之间的浮点数 doubleSystem.Double 5.010-3241.710308 之间的浮点数 decimalSystem.Decimal 1.010-287.91028 之间的浮点数 boolSystem.Boolean布尔值, true 或 false charSystem.Char 一个 Unicode 字符,存储 065535 之间的 整数 C#类型 CTS 类型说 明 objectSystem.Obje ct 根类型,CTS中的其他类型都 是从它派生而来的(包括值类 型) stringSystem.Stri ng Unicode字符串 FC#支持两个预定义的引用类型 3、数据类型使用举例 F数值类型: int theInteger = 10; double theDouble = 3.14159; Fbool类型:只有 true 和 false 值,C# 中bool值和整数 值之间不能相互转换。 bool theLogic = true; Fchar 型变量存储的是以 Unicode (表示多个国家的国际 字符集)方式编码的字符,占用两个字节,可表示 65536 种不同的字符,可以直接在一个 char 型变量中存储一个 汉字的编码。用单引号围起来,例: char theChar = c; char ChineseCharacters = 字; 数据类型使用举例 Fstring类型:是Unicode字符串,是一个引用类型。 把一个字符串赋给另一个字符串时,就会得到对同一 内存空间内字符串的两个引用。 修改一个字符串,就是创建一个全新的string对象。 F转义序列符号“” 应用:单引号、双引号 “、反斜杠、警告a、换行n、回 车r、水平制表符 t。 F转义序列符号“”:在字符串前加上,该字符串所有字 符都被看作原来的含义。 F例:string theString = “the string!”; string path=“c:abc.txt”; 等价下一句 string path=“c:abc.txt”; 3.2 常量 F常量就是在程序运行过程中其值不改变的量。类和结构可 以将常数声明为成员。 FC#常量的数据类型有多种如:sbyte、byte、short、 ushort、int、uint、long、ulong、char、float、 double、decimal、bool、string等等。 F常量分为直接常量、符号常量、固有常量: 1、直接常量:程序中直接使用的数据常量。 2、命名常量:用一个自定义的符号名来代替数据常量 。 3、固有常量:.net提供的常量,如:Color.Red。 4、命名规则与命名约定 1、直接常量 F直接常量是直接以值的形式表示的常量值,通常在值 后加上后缀以说明值的数据类型。例: 2、命名常量 F命名常量用关键字const声明并初始化,语法: 修饰符 const 数据类型符 常量名=常量表达式; 常量名要符合命名规则与命名约定; 修饰符:public 、private。 F例: public const int A=1,B=3; F一个常量可以依赖于另一个命名常量,但不能形成循 环依赖,例: class ConstExample public const int A=1; public const int B=A+2; /如果上面A=B+1 形成了循环依赖就会出错 3、固有常量 FSystem-defined constants系统定义的常量 ,Declared in system class libraries 在系统类库中声明。 FSpecify class name or group name and constant name指定 常量名及其所在的类名或组名,Example : Color.Red is the constant “Red” in the class “Color” ,Color.Red是Color类中的Red常量 ; Color.Blue、 Color.Yellow等 4、命名规则与命名约定 F常量、变量命名规则: 名称的第一个字符必须是字母、下划线”_”或” ,其后的字符可以是字母、下划线或数字; 名称中不能包含空格、句点等标点符号; 名称不可以和关键字(保留字)同名; 区分大小写。 F常量、变量命名约定: 名称要有意义,最好不使用缩写; 名称中包括数据类型; 变量名称以小写字母开始,然后每个后继单词的首字 母大写。 常量使用大写的名称。 3.3 变量 F变量是指在程序运行过程中其值可以发生变化的量。 1、变量的声明 2、变量的作用域和生存期 1、变量的声明 F声明变量语法如下: 修饰符 数据类型符 变量名1 = 初值1,变量名2=初值2,; 类级变量使用修饰符:public 、private、 static 。 变量在使用之前必须初始化(赋初值),否则将不能通 过编译。 F合法命名:myBigVar, Var1, _test, myVar F非法命名:99BottleOfBeer, switch,Its-All-Over 2、变量的作用域和生存期 F变量的生存期:变量可以在某特定的时刻被创建,或在不 再需要时被删除。在创建和删除之间所经过的时间,被称 为变量的生存期。 F变量的作用域:是指可以使用该变量的代码区域。 与声 明位置有关,有命名空间级、类级、局部、块级。 F命名空间级变量(和常量):在本命名空间(一般是整个 工程)的所有方法中使用,但良好的编程惯例不使用。 变量的作用域和生存期 F类级变量:声明位置在窗体或类的顶部声明,用修饰符 public、private声明,在该窗体或其他类的所有方法中 使用;实例对象时分配空间,所在的对象被撤消了,该变 量也就从内存中被清除了。 private static int abcd; F静态变量:在类中使用static 关键字声明的变量。在第一次 实例对象时分配空间,对象被 撤消时,静态变量仍然在内存 中保存,下次再用时以此为初 值。 变量的作用域和生存期 F局部变量:声明位置在窗体或类所包含的方法内位置声明 (第一次使用变量之前),只能该方法内使用。不能使用 修饰符 public 、private与static。 F块级变量:声明位置在语句块(大括号范围内)内(第一 次使用变量之前),只能该语句快内使用。如在for、 while 循环中声明的变量,只存在于该循环体。不能使用 修饰符 public 、private与static。 3.4 复杂的变量类型 F复杂的变量类型: 1、枚举enum 2、结构struct 3、数组 1、 枚举 F枚举变量是指将变量可能的取值一一列举出来,变量的 值只限于枚举值之一。 F枚举用enum关键字来定义,语法如下: enum typeName value1, value2, value3, F默认情况下,枚举类型中的每一个值是int类型值。枚 举类型中的值还可以是byte,sbyte,short,ushort, uint,long和ulong数据类型。 F默认情况下,从0开始自动赋值;可使用“=”运算符来 可以改变枚举元素的值。 枚举 F枚举是一个用户定义的数据类型,使用时需再声明这个枚 举类型的变量。语法如下: typeName varName; F枚举变量赋值: varName = typeName.value2; 2、结构 F结构是由几个不同类型的数据组成一种新的数据类型,结 构体用关键字struct来定义,语法如下: struct F包含变量结构数据成员的声明 ,每个成员的声明采用如下格式: ; F例: struct route public orientation direction; public double distance ; 结构 F定义了结构类型之后,就可以定义该数据类型的变量: route myRoute; F通过“.”成员运算符可以访问该变量的数据成员,例: myRoute.direction = orientation.north; myRoute.distance = 2.5; 3、数组变量 F数组是同一数据类型的一组值的集合。数组属于引用类型 ,连续存放在堆内存中,这些变量均具有相同的名称、相 同的数据类型,可以通过下标相互区分,每一个这样的变 量我们把它称为数组元素。为数据处理带来很大方便。 F本节分别介绍: 一维数组 多维数组 数组的数组 一维数组 F 一维数组只有一个下标的数组。数组使用前必须先声明和分配空间。 F一维数组的声明: 数据类型元素个数n 数组名称; 数组名称与普通变量命名相同; 元素个数n可省略,就是没指定数组大小; 第一个数组元素下标0,一直到第n-1元素,共n个。 例:string names; string10 names;/从0到9共10个元素。 F一维数组的声明并初始化,也可不使用关键字new初始化, 下列都是合法形式: string weekDays = new string “Sun“, “Mon“, “Tue“, “Wed“, “Thu“, “Fri“, “Sat“ ; int array1 = new int5 1, 2, 3, 4, 5 ; /or: int array2 = new int 1, 2, 3, 4, 5 ; /or int array3 = 1, 2, 3, 4, 5 ; 一维数组 F使用数组前必须初始化(赋值),可以先声明后初始化: int array4; array4 = new int 1, 2, 3, 4, 5 ; / OK /array4 = new int5 1, 2, 3, 4, 5 ; / OK /array4 = 1, 2, 3, 4, 5 ; / 错误初始化形式 F引用一维数组元素的形式:数组名下标;与普通变量一 样使用。 F例: int array1 = new int5 1, 2, 3, 4, 5 ; 那么array1数组具有元素:array10值为1, array12值为2 , . . . array14值为5 。 多维数组 F多维数组具有多个下标,多维数组中常用的是二维数组 。 F声明、引用于一维数组类似。 F二维矩矩阵数组,每一行有相同的列数,语法: ,; F赋值类似于一维数组,但需用逗号分隔开下标。例: double, myArray = new double3, 4; F可以使用直接常量初始化。使用嵌套的花括号,用逗号 分隔开。例如: double, myArray = 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6; F引用方形二维数组元素的一般格式如下: 数组名下标1,下标2 多维数组 F多维数组:只需要更多的逗号来定义,语法: ,; F要访问多维数组中的每个元素,只需指定它们的下标,并 用逗号分隔开即可 。 F多维数组还有一种变长数组,也叫正交数组,其中每行可 以有不同的元素个数。 数组的数组 F声明数组的数组,例如: int a; F初始化有两种方式: 第一种可以先初始化包含其他数组的数组,然后再 初始化子数组: a = new int3; a0 = new int4; a1 = new int3; a2 = new int1; 第二种方式是使用字面值赋值的一种改进形式: a = new int1, 2, 3, new int1, new int1, 2; 3.5 方法 F1、方法的声明与定义 F2、方法的调用 F3、.net提供的Math类静态方法 F4、.net提供的时间日期DateTime类实例方法 1、方法的声明与定义 F可以把程序中多次用到的某个任务定义为方法, 可反复调用,提高代码复用率,提高编程效率。 F在VB、C和C+中,可以定义与类完全不相关的全局函数, 但在C#中,方法必须在类中声明和定义,正式的C#术语并 不区分函数和方法。 FC#方法分为两种: 实例方法:处理类的某个实例,类实例化对象后才能使 用,在类中用public或private声明。 F静态方法:不需(也不能)实例化即可使用,在类中用 static声明。(例如Console.WriteLine()方法)。 方法声明与定义 F方法的定义: 修饰符 返回值类型 方法名(形式参数表) 方法体; return(z); /返回结果z F修饰符指定方法的访问权限,实例方法有public、 private、默认为private,静态方法在修饰符后加static 关键词; F返回值类型就是前面介绍的数据类型,不返回值用void; F形式参数表是传递给方法的参数,与调用时的实参一一对 应。 举例 例如:一个求两个数中最大值的方法定义如下 static int Max(int a , int b) /方法定义 int c; c=ab?a:b; return c; 修饰符 返回值类型 方法名 参数 方法体 2、方法的调用 F实例方法的调用,先要定义一个方法所在类的对象, 并实例化;再通过对象调用方法,格式为: 类名 对象名 = new 类名(构造函数参数); 对象名.方法名(实际参数表); F静态方法调用格式为: 类名.静态方法名(实际参数表); F静态方法属于整个类,而不属于根据类生成的对象, 如系统把很多数学函数,以静态方法形式封装成Math 类包含到命名空间System中,共我们直接使用。 F我们也经常自定义一些静态方法。 3、 .net提供的Math类静态方法 F.net把常用数学常数、三角函数、对数函数和其他通用数 学函数函数封装成Math类,包含到命名空间System中。 FMath类的所有方法和属性都是静态的,调用语法 Math.method(parameter); 或 Math.constant; Math 类的静态方法 名称说明 Abs(Decimal)返回 Decimal 数字的绝对值。 Acos返回余弦值为指定数字的角度。 Asin返回正弦值为指定数字的角度。 Atan返回正切值为指定数字的角度。 Atan2返回正切值为两个指定数字的商的角度。 BigMul生成两个 32 位数字的完整乘积。 Ceiling( )返回大于或等于指定的十进制数的最小整数值。 Cos返回指定角度的余弦值。 Cosh返回指定角度的双曲余弦值。 DivRem(x, y, z)计算x、y两个 32 或64位有符号整数的商,并通 过输出参数返回余数z。 Exp返回 e 的指定次幂。 Floor(Decimal)返回小于或等于指定小数的最大整数。 Floor(Double)返回小于或等于指定双精度浮点数的最大整数。 Math 类的静态方法 IEEERemainder返回一指定数字被另一指定数字相除的余数。 Log(Double)返回指定数字的自然对数(底为 e)。 Log(Double, Double)返回指定数字在使用指定底时的对数。 Log10返回指定数字以 10 为底的对数。 Max( ,)返回两个 数中较大的一个。 Min( , )返回两个数字中较小的一个。 Pow返回指定数字的指定次幂。 Round(Decimal)将小数值舍入到最接近的整数值。 Sign(Decimal)返回表示数字符号的值。 Sin返回指定角度的正弦值。 Sinh返回指定角度的双曲正弦值。 Sqrt返回指定数字的平方根。 Tan返回指定角度的正切值。 Tanh返回指定角度的双曲正切值。 Truncate( )计算指定小数的整数部分。 4、时间日期DateTime类实例方 法 F System.DateTime currentTime=new System.DateTime(); F 取当前年月日时分秒 currentTime=System.DateTime.Now; F 取当前年 int 年=currentTime.Year; F 取当前月 int 月=currentTime.Month; F 取当前日 int 日=currentTime.Day; F 取当前时 int 时=currentTime.Hour; F 取当前分 int 分=currentTime.Minute; F 取当前秒 int 秒=currentTime.Second; F 取当前毫秒 int 毫秒=currentTime.Millisecond; (变量可用中文) 时间日期DateTime类 F 取中文日期显示年月日时分 string strY=currentTime.ToString(“f“); /不显示秒 F 取中文日期显示_年月 string strYM=currentTime.ToString(“y“); F 取中文日期显示_月日 string strMD=currentTime.ToString(“m“); F 取中文年月日 string strYMD=currentTime.ToString(“D“); F 取当前时分,格式为:14:24 string strT=currentTime.ToString(“t“); F 取当前时间,格式为:2003-09-23T14:46:48 string strT=currentTime.ToString(“s“); F 取当前时间,格式为:2003-09-23 14:48:30Z string strT=currentTime.ToString(“u“); F 取当前时间,格式为:2003-09-23 14:48 string strT=currentTime.ToString(“g“); F 取当前时间,格式为:Tue, 23 Sep 2003 14:52:40 GMT string strT=currentTime.ToString(“r“); F 获得当前时间 n 天后的日期时间 DateTime newDay = DateTime.Now.AddDays(100); 3.6 数据类型转换 F有时需要把数据从一种类型转换为另一种类型,C#有隐式 转换和显式转换两种方式。 F隐式转换:只要能保证转换值不会发生任何变化,就可以 自动进行的转换。如只能从较小的整数类型隐式地转换为 较大的整数类型,反之就可能出错。 F显式转换:为避免出错,通过一些方法实现类型转换: 1、圆括号转换数据类型 2、Convert 类的静态方法转换数据类型 3、数据类型的实例方法转换数据类型 4、数据类型的静态方法转换数据类型 1、圆括号转换数据类型 F圆括号()用于将操作数强制转换为给定的数

温馨提示

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

评论

0/150

提交评论