第03章 面向对象的编程基础

上传人:新** 文档编号:590859195 上传时间:2024-09-15 格式:PPT 页数:72 大小:199KB
返回 下载 相关 举报
第03章 面向对象的编程基础_第1页
第1页 / 共72页
第03章 面向对象的编程基础_第2页
第2页 / 共72页
第03章 面向对象的编程基础_第3页
第3页 / 共72页
第03章 面向对象的编程基础_第4页
第4页 / 共72页
第03章 面向对象的编程基础_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《第03章 面向对象的编程基础》由会员分享,可在线阅读,更多相关《第03章 面向对象的编程基础(72页珍藏版)》请在金锄头文库上搜索。

1、1 第三章 面向对象的编程基础 3.1 3.1 面向面向对象的程象的程序序设计 3.1.1 3.1.1 类的组织类的组织 3.1.2 3.1.2 构造函数构造函数 3.1.3 3.1.3 方法方法 3.1.4 3.1.4 属性属性 3.1.5 3.1.5 事件事件3.2 3.2 常用类操作和数据处常用类操作和数据处理理 3.2.1 Convert3.2.1 Convert类类 3.2.2 String3.2.2 String类类 3.2.3 3.2.3 StringBuilderStringBuilder类类 3.2.4 DataTime3.2.4 DataTime类和类和 TimeSpanT

2、imeSpan类类 3.2.5 Math3.2.5 Math类类 沤福杨暮白辗彤蛆准碘勿徒盏选蛛磋赫秦碘叭哮缅幽毁瀑沸际外契驰孜级第03章 面向对象的编程基础第03章 面向对象的编程基础23.1 3.1 面向对象的程序设计面向对象的程序设计类与对象类与对象 类:类:一组具有相同数据结构和相同操作的对象的一组具有相同数据结构和相同操作的对象的 集合集合. 例如例如:汽车汽车 对象(实例):对象(实例):类的实例化类的实例化 . 例如例如:卡车卡车 要使用对象,必须先定义类,然后再创建对象。要使用对象,必须先定义类,然后再创建对象。 本资料由-校园大学生创业网-提供http:/ 面向对象的编程基础

3、第03章 面向对象的编程基础33.1.1 3.1.1 类的组织类的组织1.类的声明类的声明 用用class定义类,声明类的形式为:定义类,声明类的形式为:附加声明附加声明 访问修饰符访问修饰符 class 类名称类名称:基类基类 ,接口序列,接口序列 字段声明字段声明 构造函数构造函数 方法方法 事件事件 注意注意:中的内容可省或任中的内容可省或任选其一选其一, ,当两者都有时当两者都有时, ,先基先基类后接口类后接口慧脯毋叼肤沏里圾莆违锑高汕址团贫妇荐舜祥鲤潜况迈胰承休粉烙寐亡措第03章 面向对象的编程基础第03章 面向对象的编程基础43.1.1 3.1.1 类的组织(续)类的组织(续)pu

4、blic class Child private int age; private string name; / 不带参数的构造函数不带参数的构造函数 public Child() name = none; / 带参数的构造函数带参数的构造函数 public Child(string name, int age) 祭猫排姑她沈长讳支揪姬乐滇茂淌毙碗姚烂疚蜂酗捉哪鸿窟抨酶憎逐萤矢第03章 面向对象的编程基础第03章 面向对象的编程基础53.1.1 3.1.1 类的组织(续)类的组织(续) this.name = name; this.age = age; / 输出方法输出方法 public vo

5、id PrintChild() Console.WriteLine(0, 1 years old., name, age); public class Program债到返钾唆底鹤庆冬愈泵助假迪酪签舱玉返伐马州术卓疆髓糕钢侗柏踌栋第03章 面向对象的编程基础第03章 面向对象的编程基础63.1.1 3.1.1 类的组织(续)类的组织(续) public static void Main() /使用使用new关键字创建对象,关键字创建对象,new后是调用的构后是调用的构造函数造函数 Child child1 = new Child(Zhang San, 11); Child child2 = n

6、ew Child(Li Si, 10); Child child3 = new Child(); / 显示结果显示结果 Console.Write(Child #1: ); child1.PrintChild(); Console.Write(Child #2: ); child2.PrintChild(); Console.Write(Child #3: ); child3.PrintChild();护拟虽腮诊枚揽计请豆扬用究刷纲洲呻沮拷售沛衙伏娥亿缀肾剿懂矫必屠第03章 面向对象的编程基础第03章 面向对象的编程基础73.1.1 3.1.1 类的组织(续)类的组织(续) Console.R

7、eadLine(); 语勤肘凹狄酮耙赌讹顿冗板脉路旨蛆跋寐空颖氢东范鳞蛀复连檀洋郸归金第03章 面向对象的编程基础第03章 面向对象的编程基础82.对象的生存周期对象的生存周期 对象在建立时分配了内存,创建对象实际上作了对象在建立时分配了内存,创建对象实际上作了两个方面的工作:两个方面的工作:(1 1)使用)使用newnew保留字要求系统分配内存;保留字要求系统分配内存;(2 2)使用构造函数初始化数据。)使用构造函数初始化数据。悯踪怔炙疯舟酋摧课实赴屉诺符眩栈趣虏仿功控宪洱绿冰咀歌捉凡淬微劝第03章 面向对象的编程基础第03章 面向对象的编程基础93.1.1 3.1.1 类的组织(续)类的组

8、织(续) C# C#也允许在程序中定义析构函数(定义方法与也允许在程序中定义析构函数(定义方法与C+C+类似),但是类似),但是 C# C#不允许在程序中调用析构函不允许在程序中调用析构函数,而只能由垃圾回收器调用,原因是如果把销毁数,而只能由垃圾回收器调用,原因是如果把销毁对象的工作全部交给编程者通过调用析构函数完对象的工作全部交给编程者通过调用析构函数完成,而系统不自动实现销毁的功能,一旦编程者忘成,而系统不自动实现销毁的功能,一旦编程者忘记销毁对象,就会引起内存泄漏问题。所以采用垃记销毁对象,就会引起内存泄漏问题。所以采用垃圾回收机制自动销毁不再使用的对象。圾回收机制自动销毁不再使用的对

9、象。 因此,我们编写程序时不需要定义析构函数,因此,我们编写程序时不需要定义析构函数,而是由系统自动定义,自动调用。而是由系统自动定义,自动调用。针逞表字拯镑聂鸥嘛湖衬敏魏判里疹揪赌跌前众禾挫所剪瞧睦沃淮烷幌帆第03章 面向对象的编程基础第03章 面向对象的编程基础103.1.1 3.1.1 类的组织(续)类的组织(续) 注意,虽然注意,虽然C#C#不允许在程序中直接调用析构函不允许在程序中直接调用析构函数销毁对象,但是可以调用安全的数销毁对象,但是可以调用安全的DisposeDispose方法销方法销毁对象,在对性能要求比较高的场合,调用毁对象,在对性能要求比较高的场合,调用DisposeD

10、ispose方法直接销毁对象还是很有用的。方法直接销毁对象还是很有用的。 垃圾回收机制是在它认为适当的时候自动回收垃圾回收机制是在它认为适当的时候自动回收不再使用的内存的,即检测没有被引用的对象,然不再使用的内存的,即检测没有被引用的对象,然后销毁之。后销毁之。 销毁对象也是做了两个方面的工作:销毁对象也是做了两个方面的工作: (1)释放占用的内存;)释放占用的内存; (2)将分配给对象的内存归还给堆)将分配给对象的内存归还给堆(Heap)。)。 北拼贪匆韩碧矗嘻曝芬乖迹刨厨缝彝廉六瓜腐夕灯冀凉灵糕嫁椅乙尸巢教第03章 面向对象的编程基础第03章 面向对象的编程基础113.1.1 3.1.1

11、类的组织(续)类的组织(续)3 3 字段和局部变量字段和局部变量 字段字段:指声明为类一级的对象或值类型的变量。指声明为类一级的对象或值类型的变量。 局部变量局部变量:指在方法、事件以及构造函数内声指在方法、事件以及构造函数内声明的变量。明的变量。 public class Program public static int j=20; /字段字段 public static void Main() 拐秉穷台荆捅励透额萌缺蛾机充血池锑舵和授铂技遭缠星止眺姚栏宿威够第03章 面向对象的编程基础第03章 面向对象的编程基础123.1.1 3.1.1 类的组织(续)类的组织(续) int j=30;

12、 /局部变量局部变量 Console.WriteLine(j); /输出结果:输出结果:30 Console.WriteLine(Program.j); /输出结果:输出结果:20 Console.ReadLine(); 寨骆锡纵厄疚因幼盈匀淀与歇剑息姚谣借估俄粱达颇赣精呜愁惮哼赞生迎第03章 面向对象的编程基础第03章 面向对象的编程基础13 当字段和局部变量名相同时,如果要引用静当字段和局部变量名相同时,如果要引用静态字段,可以使用下面的形式:态字段,可以使用下面的形式: 类名类名.字段名字段名 如果是实例字段,则使用下面的形式:如果是实例字段,则使用下面的形式: this.字段名字段名

13、这里的这里的this指当前实例。指当前实例。 当然,如果没有出现字段和局部变量名重名的当然,如果没有出现字段和局部变量名重名的情况,引用字段的形式和引用局部变量的形式相同。情况,引用字段的形式和引用局部变量的形式相同。羞籽流拢观掩咯稍武增拭豺杯剥褂荒棕形昨矮美劫漳摘耪枝斥盟黔木蕴镶第03章 面向对象的编程基础第03章 面向对象的编程基础143.1.1 3.1.1 类的组织(续)类的组织(续)4. 4. 静态成员与实例成员静态成员与实例成员类的成员类的成员 类的成员包括字段、属性、构造函数、方法、事件、类的成员包括字段、属性、构造函数、方法、事件、索引、嵌套类。索引、嵌套类。类的成员分静态成员和

14、实例成员类的成员分静态成员和实例成员静态成员在内存中只有一份静态成员在内存中只有一份静态成员要等到应用程序结束时才会退出内静态成员要等到应用程序结束时才会退出内存。存。把只有创建了类的实例才能够使用的成员叫把只有创建了类的实例才能够使用的成员叫实例成员。实例成员。 准褥默接转嘴苔故屿枢够证缘闹佬段奎迅吻案味赛呀莱镣物欢鱼街咏乳滴第03章 面向对象的编程基础第03章 面向对象的编程基础153.1.1 3.1.1 类的组织(续)类的组织(续)5. 5. 访问修饰符访问修饰符C#C#中有以下成员访问修饰符:中有以下成员访问修饰符:Public (常用)(常用)任何外部的类都可以不受限制的存任何外部的

15、类都可以不受限制的存取这个类的方法和数据成员。取这个类的方法和数据成员。private (常用)(常用)类中的所有方法和数据成员只能在类中的所有方法和数据成员只能在此类中使用,外部无法存取。此类中使用,外部无法存取。( (默认默认) )Protected 除了让本身的类可以使用之外,任何继承除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。自此类的子类都可以存取。障骆过讼锨寓塔焚芯跌屠钒超圆你绳船擦燕质虾濒俭崩考媒沙拓蓟湿蚕专第03章 面向对象的编程基础第03章 面向对象的编程基础163.1.1 3.1.1 类的组织(续)类的组织(续)Internal 在当前项目中都可以存取。该访问

16、权限一在当前项目中都可以存取。该访问权限一般用于基于组件的开发,因为它可以使组件以私有般用于基于组件的开发,因为它可以使组件以私有方式工作,而该项目外的其它代码无法访问。方式工作,而该项目外的其它代码无法访问。Protected internal 只限于当前项目,或者从该项目只限于当前项目,或者从该项目的类继承的类才可以存取。的类继承的类才可以存取。 Partial 局部类型,类的定义和实现可以分布在多个局部类型,类的定义和实现可以分布在多个文件中,但都要使用文件中,但都要使用partial标注,基类只需要声明标注,基类只需要声明一次,若多次声明则必须完全一致。一次,若多次声明则必须完全一致。

17、霄哉震苇解低患汛匙写缚决刻闭膀拷畸辞痔坑琶著补唬了拔岁宜掐段胁次第03章 面向对象的编程基础第03章 面向对象的编程基础173.1.2 3.1.2 构造函数构造函数 构造函数是一个特殊的方法,用于在建立对象时构造函数是一个特殊的方法,用于在建立对象时进行初始化的动作,在进行初始化的动作,在C#中,每当创建一个对象中,每当创建一个对象时,都会先调用类中定义的构造函数。时,都会先调用类中定义的构造函数。 使用构造函数的好处是它能够确保每一个对象在使用构造函数的好处是它能够确保每一个对象在被使用之前都适当地进行了初始化的动作。被使用之前都适当地进行了初始化的动作。硷防妒管泛署旧噎丁嫡音认尺引祸搪刮鹊

18、阐瑶该记矗超丹检仓壬搞寡歉胶第03章 面向对象的编程基础第03章 面向对象的编程基础18 另外,构造函数还具有以下特点:另外,构造函数还具有以下特点: 1) 每个类至少有一个构造函数。若程序代码每个类至少有一个构造函数。若程序代码中没有构造函数则系统会自动提供一个默认中没有构造函数则系统会自动提供一个默认的构造函数。的构造函数。 2) 一个构造函数总是和它的类名相同。一个构造函数总是和它的类名相同。 3) 构造函数不包含任何返回值。构造函数不包含任何返回值。绞设化起隧览巴者扶箩嵌换德羽楞罚泡何伪信转竞话连葛储癌穿读慎轰笼第03章 面向对象的编程基础第03章 面向对象的编程基础193.1.2 3

19、.1.2 构造函数(续)构造函数(续) 1.默认构造函数默认构造函数(1)如果在类中不定义构造函数,系统会提供一个)如果在类中不定义构造函数,系统会提供一个默认的构造函数。默认的构造函数。(2)默认构造函数没有参数。)默认构造函数没有参数。凭润演泊董较浅喀奇腋泅秽冶桌汤傈堡翼恋晃肢渗宫遥匠振扩瘦傍斑输妙第03章 面向对象的编程基础第03章 面向对象的编程基础203.1.2 3.1.2 构造函数(续)构造函数(续)(3)默认构造函数自动将非静态成员初始化为:)默认构造函数自动将非静态成员初始化为: 数值型数值型:如如int、double等,初始化为等,初始化为0。 bool类型:初始化为类型:初

20、始化为false. 引用类型:初始化为引用类型:初始化为null。(4)如果自己定义了构造函数,则不会自动进行初)如果自己定义了构造函数,则不会自动进行初始化。始化。兔掠街闪撩晃郝羚见毖吭迄镜舷港迅阮蛤示髓瀑坤胁窟霉结它帘弦冬犀殿第03章 面向对象的编程基础第03章 面向对象的编程基础213.1.2 3.1.2 构造函数(续)构造函数(续)2. 重载构造函数重载构造函数 有时候可能会遇到这样的情况:在一个类中的有时候可能会遇到这样的情况:在一个类中的多个方法中都要用到某一个数据成员,而该成员多个方法中都要用到某一个数据成员,而该成员值必须从其他类中传递过来。这时,无参数的构值必须从其他类中传递

21、过来。这时,无参数的构造函数就不能胜任了,解决这个问题最好的办法造函数就不能胜任了,解决这个问题最好的办法就是:重载(就是:重载(Overloading)构造函数。)构造函数。扭疑底场缓蛛涤当熏苞画妻浚箔嫡兹仑瞄靳啮独廊败惫傀晦床牌麓爆柠忆第03章 面向对象的编程基础第03章 面向对象的编程基础223.1.2 3.1.2 构造函数(续)构造函数(续)using System;using System.Collections.Generic;using System.Text;namespace OverloadingExample class Program public Program()

22、Console.WriteLine(null); 恍皆蹦氧全销铜砷组委焕交暴画云莱箩笛幌浮的薄控世坪碘镐六乏您充壮第03章 面向对象的编程基础第03章 面向对象的编程基础233.1.2 3.1.2 构造函数(续)构造函数(续) public Program(string str) Console.WriteLine(str); static void Main() Program aa = new Program(); Program bb = new Program(How are you!); Console.ReadLine(); 藤盲撰孪擎磅豢犹历戚恒足撼椒赘丈匡浑窜剿陷赐逃蜀顶努读铡

23、孺想戏目第03章 面向对象的编程基础第03章 面向对象的编程基础243.1.3 3.1.3 方法方法 方方法法(Method)是是一一组组程程序序代代码码的的集集合合,每每个个方方法法都都有有一一个个方方法法名名,便便于于识识别别和和让让其其他他方方法法调调用。用。1. 方法的定义与使用方法的定义与使用 (1 1)方法必须放在某个类中。)方法必须放在某个类中。 (2 2)定义方法的语法形式为:)定义方法的语法形式为: 访问修饰符访问修饰符 返回值类型返回值类型 方法名称(参数序列)方法名称(参数序列) 语句序列语句序列 凶乃豹娟泉眼刃变磐铲挽亥蛹睹颜收店虱贝效绥摩木揩抬壕墩恰继奇正榨第03章

24、面向对象的编程基础第03章 面向对象的编程基础253.1.3 3.1.3 方法(续)方法(续)定义方法时,需要注意以下几点定义方法时,需要注意以下几点: : 方法名不能和变量、常数或者任何声明在类中方法名不能和变量、常数或者任何声明在类中其它的成员相同。其它的成员相同。 方法可以有参数,也可以没有参数,但是不论方法可以有参数,也可以没有参数,但是不论是否有参数,小括号都是必需的。如果参数序列中是否有参数,小括号都是必需的。如果参数序列中的参数有多个,则以逗号分开。的参数有多个,则以逗号分开。 结束某个方法的执行,可以使用结束某个方法的执行,可以使用returnreturn语句,语句,程序遇到程

25、序遇到returnreturn语句后,会将执行流程交还给调用语句后,会将执行流程交还给调用此方法的程序代码段。此外,还可以用此方法的程序代码段。此外,还可以用returnreturn语句语句返回一个值。返回一个值。粱妙氧死漱狐坏抛应书悸孔忿阎扫点刑鹊阎红况时价泰渣羊及通遇沙铂俗第03章 面向对象的编程基础第03章 面向对象的编程基础263.1.3 3.1.3 方法(续)方法(续) 如果声明一个非如果声明一个非voidvoid类型的方法,则方法中类型的方法,则方法中必须至少有一个必须至少有一个returnreturn语句。语句。using System;using System.Collecti

26、ons.Generic;using System.Text;namespace MethodExample class Program public int MyMethod() 言额强慰向颗痰褐甄舌够枯逃槛乍凸抚借卖秘挂菜下踞骚壕垄局堆处帮垮第03章 面向对象的编程基础第03章 面向对象的编程基础273.1.3 3.1.3 方法(续)方法(续) Console.WriteLine(this is MyMethod.); int i = 10; return i; static void Main() Program method = new Program(); int j = 5; j =

27、 method.MyMethod();船遁有处亥菱根衣盾厚猩铣嚏腮仙桥道竭峰檄执踩寝镜淑用埔遭近窄员伙第03章 面向对象的编程基础第03章 面向对象的编程基础283.1.3 3.1.3 方法(续)方法(续) Console.WriteLine(the value is 0., j); Console.ReadLine(); 娄乞瘸妒旬淤久去颗唬诺奄儡降线闺盏忠诚忍撬湃删见紧鸵痈几果曼寅杀第03章 面向对象的编程基础第03章 面向对象的编程基础293.1.3 3.1.3 方法(续)方法(续)2. 方法中的参数传递方法中的参数传递1) 传递值类型的参数传递值类型的参数 值类型参数的格式为:值类型参

28、数的格式为: 参数类型参数类型 参数名参数名using System;using System.Collections.Generic;using System.Text;namespace ValueTransferExample class Program public static void AddOne(int a) a+; 元睡廓拄雾哩饲知寄遇遭脏糟划陛溶新挠砂欧振围械祁桌饰叉捍贰广许循第03章 面向对象的编程基础第03章 面向对象的编程基础303.1.3 3.1.3 方法(续)方法(续) static void Main() int a = 3; Console.WriteLine

29、(调用调用AddOne之前,之前,a=0, a); AddOne(a); Console.WriteLine(调用调用AddOne之后,之后,a=0, a); Console.ReadLine(); 疙豪由炉衍支诛意低碘赚屁辰杰诊连佰隐侄照有墒尾好涤评十胆撼关愁羹第03章 面向对象的编程基础第03章 面向对象的编程基础313.1.3 3.1.3 方法(续)方法(续) 2) 传递引用类型的参数传递引用类型的参数引用类型参数的格式为:引用类型参数的格式为: ref 参数类型参数类型 参数名参数名using System;using System.Collections.Generic;using

30、System.Text;namespace ReferenceTransferExample class Program public static void AddOne(ref int a) 佛怖烛亡咆形毛荐秉闷邯埋藐丸拙搂晦棍跌篮限熄睫犬涌片巾泰砍也谍缘第03章 面向对象的编程基础第03章 面向对象的编程基础323.1.3 3.1.3 方法(续)方法(续) a+; static void Main() int x = 3; Console.WriteLine(调用调用AddOne之前,之前,x=0, x); AddOne(ref x); Console.WriteLine(调用调用Add

31、One之后,之后,x=0, x); Console.ReadLine(); 村奉遗汐频熔寂念敦舆狭屯寨砒驳奠椭众玛合攀偏釜巍摔霸锤陵租愉荫甭第03章 面向对象的编程基础第03章 面向对象的编程基础333.1.3 3.1.3 方法(续)方法(续) 3) 输出多个引用类型的参数输出多个引用类型的参数 输出引用类型参数的格式为:输出引用类型参数的格式为: out 参数类型参数类型 参数名参数名using System;using System.Collections.Generic;using System.Text;namespace ReferenceOutExample class Progr

32、am public static void MyMethod(out int a, out int b)踌隅刘九寂蠢羡侯坑工坟讼当儒釉赦莱扒涪齐受稿椽茁娄骄叁断磁晒惠瞄第03章 面向对象的编程基础第03章 面向对象的编程基础343.1.3 3.1.3 方法(续)方法(续) a = 5; b = 6; static void Main() int x, y; MyMethod(out x, out y); Console.WriteLine(调用调用MyMethod之后,之后,x=0,y=1, x, y); Console.ReadLine(); 蜕召锐饶质恐军荆犯猴缚城币伙拷模邓邹杜污蔓桨蓉淡

33、百玻枯迫揭屁崎总第03章 面向对象的编程基础第03章 面向对象的编程基础353.1.3 3.1.3 方法(续)方法(续) 4) 传递个数不确定的参数传递个数不确定的参数 需要传递的参数个数不确定时,可以采用需要传递的参数个数不确定时,可以采用params关键关键字。字。using System;using System.Collections.Generic;using System.Text;namespace UncertaintyTransferExample class Program public static float Average(params long v) long to

34、tal, i;樟厉纵异密抗嘱鲜刊须瓜尚诱捷嗅册轴购返道秃喷杭辽同似殖潦眺吧酱诅第03章 面向对象的编程基础第03章 面向对象的编程基础363.1.3 3.1.3 方法(续)方法(续) for (i = 0, total = 0; i 0)主黔伟雅嗽推号况蔚棋民饮简富表坑迟尝瞳肿瞒卡绳了匡析盒釜草絮照倔第03章 面向对象的编程基础第03章 面向对象的编程基础423.1.4 3.1.4 属性(续)属性(续) number = value; /value是关键字,其值由编译器自动生是关键字,其值由编译器自动生成。成。 public class Program public static void M

35、ain() MyClass me = new MyClass();荡监济掇糊鹤麻骄灵映蔽恢奎肢沪肾蒲杖疏担诗珊管杉夹卤石堰甄涣捆敬第03章 面向对象的编程基础第03章 面向对象的编程基础433.1.4 3.1.4 属性(续)属性(续) Console.WriteLine(me.MyNumber); me.MyNumber = 5; Console.WriteLine(me.MyNumber); Console.ReadLine(); 铰苞仰舌闰砒选肩睫想翘骨斯明蚂融问贼肉缕谊澎肾痒劣拌褐润蹿鹤冷割第03章 面向对象的编程基础第03章 面向对象的编程基础443.1.4 3.1.4 属性(续)属性

36、(续)2. 属性与方法的区别属性与方法的区别 属性和方法的区别主要有:属性和方法的区别主要有: 1) 属性不必使用括号,但方法一定要使用括属性不必使用括号,但方法一定要使用括号。号。 2) 属性不能指定参数,方法可以指定参数。属性不能指定参数,方法可以指定参数。 3) 属性不能使用属性不能使用void类型,方法则可以使用类型,方法则可以使用void类型。类型。棍镀成弟钙皂陨祥琳螟像静绚巍荔桩卿沏蜕瑶滥乞伸轴研雕负迸泣匹尸缚第03章 面向对象的编程基础第03章 面向对象的编程基础453.1.5 3.1.5 事件事件事件事件: 是指当对象发生某些事情时,向其他对象提是指当对象发生某些事情时,向其他

37、对象提供通知的一种方法。供通知的一种方法。两种角色:两种角色: 1) 一个是事件发送方一个是事件发送方 2) 一个是事件接收方一个是事件接收方 用途:用途:事件最常见的用途是用于图形用户界面事件最常见的用途是用于图形用户界面 。豆龚鞭戮呵邻椎皮厂骄谚津砂曹韩训殖盼馈标厕加尹回就神震慈漳馏秋舶第03章 面向对象的编程基础第03章 面向对象的编程基础463.2 3.2 常用类操作和数据处理常用类操作和数据处理 Visual Studio 2005开发环境提供了实现各种功能开发环境提供了实现各种功能的丰富的类,其中有些类是实际编程中经常用到的,的丰富的类,其中有些类是实际编程中经常用到的,这一节只选

38、取了其中的几种,并通过一些具体例子简这一节只选取了其中的几种,并通过一些具体例子简单说明了使用方法,希望能起到抛砖引玉的作用。单说明了使用方法,希望能起到抛砖引玉的作用。 频呻栓骚痹贡码总彝洪谬滑超皮瓢贩钱洲较蛹颜雅萨之块艾苹素昭套刨抿第03章 面向对象的编程基础第03章 面向对象的编程基础473.2.1 Convert3.2.1 Convert类类 Convert类位于类位于System命名空间下,用于将一个命名空间下,用于将一个值类型转换为另一个值类型。值类型转换为另一个值类型。 using System;using System.Collections.Generic;using Sys

39、tem.Text;namespace ConvertClassExample class Program public static void Main()峻蔷牙侥讫狰遏寞肚熟鼎司履天峡畏阐壁巨讥鳞谱剧沥滓垃这探己宜扔欠第03章 面向对象的编程基础第03章 面向对象的编程基础483.2.1 Convert3.2.1 Convert类(续)类(续) double d1 = 23.5D, d2 = 23.4D; int i1 = Convert.ToInt32(d1); int i2 = Convert.ToInt32(d2); Console.WriteLine(0,1, i1, i2); in

40、t i = 0; bool b1 = Convert.ToBoolean(d1); bool b2 = Convert.ToBoolean(i); Console.WriteLine(0,1, b1, b2); string s = 123;羔页姻闲弛坑莫帚锗蟹暂幻哄哗向留本具臃珐析崩及洗籍镍吐阶啃窄茹潭第03章 面向对象的编程基础第03章 面向对象的编程基础493.2.1 Convert3.2.1 Convert类(续)类(续) i = Convert.ToInt32(s); Console.WriteLine(0,1, s, i); Console.ReadLine(); 输出结果:输出结

41、果:24,23True,False123,123黎钩咬雹托牌嘉牛畅扶同战税佃译胶抖卖崎需矛点洼敞劣肿战腔续你怨而第03章 面向对象的编程基础第03章 面向对象的编程基础503.2.2 String3.2.2 String类(续)类(续)字符串类分为两种字符串类分为两种: String类和类和StringBuilder类类String类的表示方法类的表示方法:string str = C:testfirst.cs string str = C:testfirst.cs 取字符串中的某个字符的方法取字符串中的某个字符的方法:string myString = some text;char chFi

42、rst = myString2; /结果为结果为m肺贸图砚匿摸塞暴诈限较夺株荒激陇鸽讹守垄柬立伊稚嘛芬榨俞柬果八刻第03章 面向对象的编程基础第03章 面向对象的编程基础513.2.2 String3.2.2 String类(续)类(续)注意注意: string myString = some text; myString += and a bit more; 其实际操作并不是在原来其实际操作并不是在原来myString所占内存空所占内存空间的后面直接附加上第二个字串间的后面直接附加上第二个字串,而是返回一个新而是返回一个新String实例,即重新为新字符串分配内存空间。实例,即重新为新字符串

43、分配内存空间。故项写亮辱接帛雄叙酝样窗蕴鸟拘醉利稳飘雀礼园塘砂字当坯山桔岳俗转第03章 面向对象的编程基础第03章 面向对象的编程基础523.2.2 String3.2.2 String类(续)类(续)1.字符串的表示格式字符串的表示格式 可以使用可以使用Format方法将字符串表示为规定格式。方法将字符串表示为规定格式。规定格式的一般形式为:规定格式的一般形式为: N , M: 格式码格式码 其中:其中: 表示其中的内容为可选项。表示其中的内容为可选项。 N:从零开始的整数,表示第几个参数。:从零开始的整数,表示第几个参数。 M:可选整数,表示最小宽度。若该参数的长度小于:可选整数,表示最小

44、宽度。若该参数的长度小于M,就用空格填充。如果,就用空格填充。如果M为负,则左对齐;如果为负,则左对齐;如果M为正,则右对齐。如果未指定为正,则右对齐。如果未指定M,则默认为零。,则默认为零。挝椽科侧高昌冰轮蚜议绢较教躇辜骑屿慷敢腺盘阵逸浩独昧檀往钝西棘柳第03章 面向对象的编程基础第03章 面向对象的编程基础533.2.2 String3.2.2 String类(续)类(续) 格式码格式码是可选的格式化代码字符串。(详细内容是可选的格式化代码字符串。(详细内容请搜索请搜索“格式化字符串格式化字符串”查看)查看) 必须用必须用“”“”和和“”“”将格式与其他字符分开。如将格式与其他字符分开。如

45、果恰好在格式中也要使用大括号,可以用连续的两果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即:个大括号表示一个大括号,即: “” “”或者或者“”“”。 炊吹哦骄乒辊铀赦丰熙洗脆菜操悟磺雹屋钮淫装纤纂层爪疼居掉瓷订剁赔第03章 面向对象的编程基础第03章 面向对象的编程基础543.2.2 String3.2.2 String类(续)类(续)常用格式举例:常用格式举例:1) 在在ToString中使用中使用d格式。格式。int i = 12345;/ i.ToString(d)表示将表示将i按照实际整数宽度转换为字符串按照实际整数宽度转换为字符串string str = i

46、.ToString(d);Console.WriteLine(str); /结果结果12345/ i.ToString(d8)表示将表示将i转换为字符串,宽度为转换为字符串,宽度为8位,不位,不够够8位左边用位左边用0填充填充string str1 = i.ToString(d8);Console.WriteLine(str1); /结果结果00012345组因她懂扬在肋硕棵茹颠蚕殷弄娱戏嫂茂殖雹宰涎纫率枉穗叼凭文诅力骇第03章 面向对象的编程基础第03章 面向对象的编程基础553.2.2 String3.2.2 String类(续)类(续)2) 在在string.Format中使用中使用d格

47、式。格式。int i = 123;double j = 123.45;/ 0,7:d表示第表示第0个参数,宽度个参数,宽度7位,不够位,不够7位左边用空格位左边用空格填充,填充,d表示十进制整数表示十进制整数string s1 = string.Format(the value is 0,7:d,i);Console.WriteLine(s1); /结果结果 the value is 123/ 0,7:f3表示第表示第0个参数个参数,总宽度总宽度7位位,其中小数部分占其中小数部分占3位位,不够不够7位左边填空格位左边填空格/ f表示浮点数表示浮点数string s2 = string.Form

48、at(the value is 0,7:f3,j); Console.WriteLine(s2); /结果结果 the value is 123.450侧拙酚翰截姓釉依廓军楚畴虐镭付骑间满女钩市猎炳链霓苛嘶爪遣校掂转第03章 面向对象的编程基础第03章 面向对象的编程基础563.2.2 String3.2.2 String类(续)类(续)3) 在在ToString中使用中使用f格式。格式。double i = 12345.6789;/ f2表示浮点数小数部分为表示浮点数小数部分为2位,多余部分四舍五入,不位,多余部分四舍五入,不够够2位时右边补零位时右边补零string str = i.ToS

49、tring(f2); Console.WriteLine(str); /结果结果 12345.68string str1 = i.ToString(f6); Console.WriteLine(str1); /结果结果 12345.678900丙汞厨虾野贾旁斡坛吃训单推韭降昌睦魔位底椰糜秩膜梁践鞘喉胁类粕哲第03章 面向对象的编程基础第03章 面向对象的编程基础573.2.2 String3.2.2 String类(续)类(续)4) 在在ToString中使用中使用n格式。格式。double i = 12345.6789;/ n表示整数部分从小数点向左每表示整数部分从小数点向左每3位用逗号分隔

50、开,小数位用逗号分隔开,小数部分部分2位,多余部分四舍五入位,多余部分四舍五入string str = i.ToString(n); Console.WriteLine(str); /结果结果 12,345.68/ n4表示整数部分从小数点向左每表示整数部分从小数点向左每3位用逗号分隔开,小位用逗号分隔开,小数部分数部分4位,多余部分四舍五入位,多余部分四舍五入string str1 = i.ToString(n4); Console.WriteLine(str1); /结果结果 12,345.6789忱泊班问残隋藤尘永乍原咖层褐宜笆夫鳞揪扮抿舀斡车传系鸟帖正到脸期第03章 面向对象的编程基础

51、第03章 面向对象的编程基础583.2.2 String3.2.2 String类(续)类(续)5) 在在ToString中使用中使用p格式。格式。double i = 0.126;/ p表示百分数形式表示百分数形式string s = string.Format(the value is 0:p,i);Console.WriteLine(s); /结果结果 the value is 12.60%string str = i.ToString(p);Console.WriteLine(str); /结果结果 12.60%梅硼短种奖匹壕加趣妈熟湛段四枫郊缓茄追厕抖永贿誊守似晚蔗即肃献扣第03章

52、面向对象的编程基础第03章 面向对象的编程基础593.2.2 String3.2.2 String类(续)类(续)6) 日期与时间的格式化表示。日期与时间的格式化表示。DateTime dt = new DateTime(2006,5,25);/ yy表示年占两位,表示年占两位,M表示月占表示月占1位,超出位,超出1位按实际位数位按实际位数/ d表示日占表示日占1位,超出位,超出1位按实际位数位按实际位数string str = dt.ToString(yy.M.d);Console.WriteLine(str); /结果结果 06.5.25/yyyy表示年占表示年占4位,位,M表示月占表示月

53、占1位,超出位,超出1位按实际位位按实际位数,其他按原字符输出数,其他按原字符输出string str1 = dt.ToString(yyyy年年M月月);Console.WriteLine(str1); /结果结果 2006年年5月月押牺屉琶猪仁再毕膝特傍仆荐鸽颇易押芒糟泽怖励感毋冻藻与撒毯薯晴胸第03章 面向对象的编程基础第03章 面向对象的编程基础603.2.2 String3.2.2 String类(续)类(续)7) 指定位数和对齐方式。指定位数和对齐方式。int i = 123;double j = 123.45; / 0,-7表示第表示第0个参数左对齐,占个参数左对齐,占7位,不够

54、位,不够7位右边补位右边补空格。空格。/ 1,7表示第表示第1个参数右对齐,占个参数右对齐,占7位,不够位,不够7位左边补空位左边补空格。格。string s = string.Format(i:0,-7, j:1,7, i, j);Console.WriteLine(s); /结果结果i:123 ,j: 123.45眨禽矗千殿培嫩侯敌嚷卯胎手卉豹唤娘撞原钱蕊钎锅扩梆栓邓措荚籽旺挨第03章 面向对象的编程基础第03章 面向对象的编程基础613.2.2 String3.2.2 String类(续)类(续)8) 使用占位符表示。使用占位符表示。int i = 00012;string str =

55、string.Format(0:#,#.00,i);Console.WriteLine(str); /结果结果12.00i = 0;str = string.Format(0:#, i);Console.WriteLine(str); /结果什么都不输出结果什么都不输出欧多骚轧酝洼戚绣冻却赖定坛衣顶肋性泞襄蛮葬哆掏灌透恳巾删波质钢羊第03章 面向对象的编程基础第03章 面向对象的编程基础623.2.2 String3.2.2 String类(续)类(续)2. 常用字符串操作方法常用字符串操作方法 举例说明常用的一些方法。举例说明常用的一些方法。生成字符串生成字符串string str1 = t

56、his is a string.;string str2 = str1;string str3 = new string(a,4); Console.WriteLine(str3); /结果为结果为aaaa查找指定字符串在字符串中出现的位置查找指定字符串在字符串中出现的位置IndexOf(string str) LastIndexOf(string str) 波选措质袜诲残靖殖弱鼠健盏这微吐鸭溶煞弃践限捧褐啼谩助繁皖馋迅叔第03章 面向对象的编程基础第03章 面向对象的编程基础633.2.2 String3.2.2 String类(续)类(续)例如例如:Console.WriteLine(st

57、r1.IndexOf(is); /结果结果为为2(注意序号从注意序号从0开始开始)Console.WriteLine(str1.LastIndexOf(is); /结结果为果为5删除指定数量的字符删除指定数量的字符Remove(int startIndex,int count) 例如例如:string str1 = this is a string.“Console.WriteLine(str1.Remove(1,2); /结果为结果为ts is a string 狰隅渔蠕赊擎赤拢帜爪沛眶瓷宇遁触害唾靶墅磋窘咎肠茎滞黑烦拧侍谊掐第03章 面向对象的编程基础第03章 面向对象的编程基础643.2

58、.2 String3.2.2 String类(续)类(续)字符串替换字符串替换 Replace (string oldStr,string newStr) 例如例如:string str1 = this is a string.“Console.WriteLine(str1.Replace(is,xy); /结果为结果为thxy xy a string 分离字符串分离字符串 Split(char separator) 例如例如:string str1 = this is a string.“圃陇烛彼踏臻京泡斤卢塑限矣病页蠢改挽抓次靶蔚是阉隆矗忌击戊度校切第03章 面向对象的编程基础第03章 面

59、向对象的编程基础653.2.2 String3.2.2 String类(续)类(续)string str = str1.Split(.); for(int i = 0;i str.Length;i+) Console.WriteLine(stri); 输出结果输出结果: this is a string 遮讫藉式听床抑咨腾硼敞伴愁膊俞塔怨沪佯村卷伎将膊秀坛面鲤请友颂坤第03章 面向对象的编程基础第03章 面向对象的编程基础663.2.2 String3.2.2 String类(续)类(续)把字符串中的字符复制到一个字符数组中把字符串中的字符复制到一个字符数组中 利用利用ToCharArray可

60、以将字符串转换为字符数可以将字符串转换为字符数组。组。 字符串中字母的大小写转换字符串中字母的大小写转换 利利用用ToUpper可可以以将将字字符符串串的的所所有有英英文文字字母母转转换换为为大大写写,利利用用ToLower可可以以将将字字符符串串的的所所有有英英文文字母转换为小写。字母转换为小写。从字符串开头或结尾删除指定的字符从字符串开头或结尾删除指定的字符 利利用用TrimStart删删除除字字符符串串首首部部空空格格,利利用用TrimEnd删删除除字字符符串串尾尾部部空空格格,利利用用Trim删删除除字字符符串首部和尾部空格。串首部和尾部空格。 棘嘿壶锐撵霉镶咙悟颈治帽阉楼重掺亢按烟泽

61、瞅酸汞掺谨雾掣差醛晤抡喻第03章 面向对象的编程基础第03章 面向对象的编程基础673.2.2 String3.2.2 String类(续)类(续)例如例如:string s1 = this is a book;string s2 = that is a pen;string s3 = is a pen ;Console.WriteLine(s1.TrimStart(); /删除首部空格删除首部空格Console.WriteLine(s2.TrimEnd(); /删除尾部空格删除尾部空格Console.WriteLine(s3.Trim(); /删除首部和尾部空格删除首部和尾部空格填充字符到字

62、符串中使总长度等于指定长度填充字符到字符串中使总长度等于指定长度 PadLeft(总长度(总长度,字符)字符) 钨已朔到窒搏享锗孔踏逊袭赋擎泰烙骤蛰辉釜纤屹氟膘定馏因逞袖嘉逝闰第03章 面向对象的编程基础第03章 面向对象的编程基础683.2.2 String3.2.2 String类(续)类(续)PadRight(总长度(总长度,字符)字符) 例如例如:string str = a;string str1 = str.PadLeft(5,e); Console.WriteLine(str1); /结果为结果为eeeeastring str2 = str.PadRight(5,e); Cons

63、ole.WriteLine(str2); /结果为结果为aeeee秤丹蛹筐举耗砍止蛾芹视霜嗜阎瑰屡隐妮晓阵俗墓茹蒂违简旋酚谣咎马容第03章 面向对象的编程基础第03章 面向对象的编程基础693.2.3 StringBuilder3.2.3 StringBuilder类类 StringBuilder类位于类位于System.Text名称空间下,名称空间下,使用使用StringBuilder类每次重新生成新字符串时不类每次重新生成新字符串时不是再生成一个新实例,而是直接在原来字符串占是再生成一个新实例,而是直接在原来字符串占用的内存空间上进行处理,而且它可以动态的分用的内存空间上进行处理,而且它可

64、以动态的分配占用的内存空间大小。因此,在字符串处理操配占用的内存空间大小。因此,在字符串处理操作比较多的情况下,使用作比较多的情况下,使用StringBuilder类可以大类可以大大提高系统的性能。大提高系统的性能。 凋拍丝虏毅渊叭名欢谐霖乞淆乡赏荔最存疯丈乾矮铂氖破范扒刚晦氢陪婆第03章 面向对象的编程基础第03章 面向对象的编程基础703.2.4 DataTime类和类和TimeSpan类类 DateTime类可以表示范围在类可以表示范围在00010001年年1 1月月1 1日午夜日午夜 12:00:0012:00:00到到 9999 9999年年1212月月3131日晚上日晚上11:59

65、:5911:59:59之间的日之间的日期和时间,最小时间单位等于期和时间,最小时间单位等于100100毫微秒。毫微秒。 TimeSpan类可以表示一个时间间隔。其范围可类可以表示一个时间间隔。其范围可 以在以在 Int64.MinValue 到到 Int64.MaxValue之间。之间。 护朝肩我慌冉翘朽侣返怀幼收烈斗泽欺孝懊淀赊遮霄钻仰贡睦唱堆面挤睛第03章 面向对象的编程基础第03章 面向对象的编程基础713.2.5 Math3.2.5 Math类类 Math类位于类位于System命名空间下,为三角函数、命名空间下,为三角函数、对数函数和其他通用数学函数提供常数和静态方法。对数函数和其他

66、通用数学函数提供常数和静态方法。例如:例如: int i = 10, j = -5; double x = 1.3, y = 2.7; double a = 2.0, b = 5.0; Console.WriteLine(string.Format(-5的绝对值的绝对值为为0, Math.Abs(j); Console.WriteLine(string.Format(大于等于大于等于1.3的最小整数为的最小整数为0, Math.Ceiling(x); Console.WriteLine(string.Format(小于等于小于等于2.7的最大整数为的最大整数为0, Math.Floor(y);

67、 面望赎湿改禽汗乡芹斯板痉匿倚遗呐或郸发乏含之退氧顽夺譬茶肯柳寨诡第03章 面向对象的编程基础第03章 面向对象的编程基础723.2.5 Math3.2.5 Math类(续)类(续) Console.WriteLine(string.Format(10和和-5的较大的较大者为者为0, Math.Max(i, j); Console.WriteLine(string.Format(1.3和和2.7的较小的较小者为者为0, Math.Min(x, y); Console.WriteLine(string.Format(2的的5次方为次方为0, Math.Pow(a, b); Console.WriteLine(string.Format(1.3的四舍五入的四舍五入值为值为0, Math.Round(x); Console.WriteLine(string.Format(5的平方根为的平方根为0, Math.Sqrt(b); Console.ReadLine(); 本资料由-校园大学生创业网-提供http:/ 面向对象的编程基础第03章 面向对象的编程基础

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号