第4章-面向对象的编程基础课件

上传人:沈*** 文档编号:241644489 上传时间:2024-07-12 格式:PPTX 页数:48 大小:409.10KB
返回 下载 相关 举报
第4章-面向对象的编程基础课件_第1页
第1页 / 共48页
第4章-面向对象的编程基础课件_第2页
第2页 / 共48页
第4章-面向对象的编程基础课件_第3页
第3页 / 共48页
点击查看更多>>
资源描述
第第4章章面向对象的编程基础面向对象的编程基础4.1类类4.2结构结构4.3方法方法4.4属性与索引器属性与索引器12 七月 202424.1类类l类与对象类与对象类:一组具有相同数据结构和相同操作的对象的集合;类:一组具有相同数据结构和相同操作的对象的集合;u例如例如:汽车汽车对象(实例):类的实例化对象(实例):类的实例化;u例如例如:卡车、面包车、公交车、卡车、面包车、公交车、l注意:注意:要使用对象,必须先定义类,然后再创建对象。要使用对象,必须先定义类,然后再创建对象。l创建对象的两个工作:创建对象的两个工作:使用使用new保留字要求系统分配内存;保留字要求系统分配内存;使用构造函数初始化数据。使用构造函数初始化数据。l销毁对象的两个工作:销毁对象的两个工作:释放占用的内存;释放占用的内存;将分配给对象的内存归还给堆(将分配给对象的内存归还给堆(Heap)。)。Object类类lC#中所有的中所有的类都直接或都直接或间接接继承自承自System.Object类;lC#中所有的中所有的类都集成了都集成了Object类的公共接口;的公共接口;12 七月 20243名称说明Equals确定两个确定两个Object实例是否相等实例是否相等GetHashCode用作特定类型的哈希函数用作特定类型的哈希函数GetType获取当前实例的获取当前实例的TypeToString返回表示当前返回表示当前Object的字符串的字符串4.1类类4.1.1类的声明类的声明和成员组织和成员组织4.1.2构造函数构造函数4.1.3字段和局部变量字段和局部变量4.1.4静态成员与实例成员静态成员与实例成员4.1.5访问修饰符访问修饰符12 七月 202454.1.1类的声明类的声明l用用class定义类,声明类的形式为:定义类,声明类的形式为:附加声明附加声明访问修饰符访问修饰符class类名称类名称:基类基类,接口序列,接口序列字段声明字段声明构造函数构造函数方法方法事件事件l类声明注意类声明注意访问修饰符缺省时,访问修饰符缺省时,默认为默认为private(私有)的;(私有)的;类名是用户自定义的符号,类名是用户自定义的符号,大小写敏感大小写敏感;当基类和接口都有时,先写基类后写接口;当基类和接口都有时,先写基类后写接口;u基类只能有一个,接口可以有多个;基类只能有一个,接口可以有多个;12 七月 20246publicclassChild/定义类级别的私有变量,称为字段定义类级别的私有变量,称为字段privateintage;privatestringname;/不带参数的构造函数不带参数的构造函数publicChild()name=none;/带参数的构造函数带参数的构造函数publicChild(stringname,intage)this.name=name;this.age=age;/输出方法输出方法publicvoidPrintChild()Console.WriteLine(0,1yearsold.,name,age);类举例类举例(1/2)12 七月 20247publicclassProgrampublicstaticvoidMain()/使用使用new关键字创建对象,关键字创建对象,new后是调用的构造函数后是调用的构造函数Childchild1=newChild(ZhangSan,11);Childchild2=newChild(LiSi,10);Childchild3=newChild();/显示结果显示结果Console.Write(Child#1:);child1.PrintChild();Console.Write(Child#2:);child2.PrintChild();Console.Write(Child#3:);child3.PrintChild();Console.ReadLine();类举例类举例(2/2)输出结果:输出结果:Child#1:ZhangSan,11yearsold.Child#2:LiSi,10yearsold.Child#3:none,0yearsold.this关键字关键字lthis关关键字字仅限于在构造函数、限于在构造函数、类的方法和的方法和类的的实例中使用;例中使用;lthis关关键字的用法字的用法在构造函数中使用,表示正在在构造函数中使用,表示正在构造的构造的对象;象;在方法中使用,表示在方法中使用,表示调用用该方方法的法的对象;象;lthis关关键字可以字可以认为是一个常量;是一个常量;12 七月 20248classApublicintx;staticvoidMain()x=5;Console.WriteLine(x);Console.WriteLine(this.x);类成员类成员l按照成员形式分:按照成员形式分:数据成员数据成员u常量、变量、属性、常量、变量、属性、方法成员方法成员u方法、事件、索引指示器、构造函数、方法、事件、索引指示器、构造函数、l按照成员的归属分:按照成员的归属分:静态成员静态成员u属于类所有,为所有该类的实例所共有;属于类所有,为所有该类的实例所共有;实例成员实例成员u属于类的对象所有,每个实例都对应于自己的实例成员;属于类的对象所有,每个实例都对应于自己的实例成员;12 七月 2024912 七月 2024104.1.2构造函数构造函数l构造函数是一个特殊的方法;构造函数是一个特殊的方法;用于在建立对象时进行初始化的动作;用于在建立对象时进行初始化的动作;确保每一个对象在被使用之前都进行了初始化。确保每一个对象在被使用之前都进行了初始化。l构造函数特点:构造函数特点:每个类至少有一个构造函数,可重载;每个类至少有一个构造函数,可重载;u若没有构造函数,则系统会自动提供一个默认的构造函数。若没有构造函数,则系统会自动提供一个默认的构造函数。构造函数的名称总是和类名相同;构造函数的名称总是和类名相同;构造函数不包含任何返回值,不能使用构造函数不包含任何返回值,不能使用return语句;语句;构造函数总是构造函数总是public的,否则该类无法实例化;的,否则该类无法实例化;构造函数是在执行构造函数是在执行new运算符时,编译器自动选择参数匹配的运算符时,编译器自动选择参数匹配的构造函数调用的,不能显式调用;构造函数调用的,不能显式调用;12 七月 2024111、默认、默认的实例的实例构造函数构造函数l若若类中未定中未定义构造函数,构造函数,则系系统会提供一个默会提供一个默认的无参的构造的无参的构造函数。函数。l默默认构造函数的特点:构造函数的特点:没有参数;没有参数;自自动对非静非静态成成员初始化;初始化;u数数值类型(如型(如int、double等),初始化等),初始化为0。ubool类型,初始化型,初始化为false.u引用引用类型,初始化型,初始化为null。l若类中定义了构造函数,则系统不再提供默认的构造函数,程若类中定义了构造函数,则系统不再提供默认的构造函数,程序员必须自行定义用到的所有构造函数;序员必须自行定义用到的所有构造函数;12 七月 2024122、重载(重载(Overloading)实例实例构造函数构造函数l重重载实例构造函数的适用情况:例构造函数的适用情况:在一个在一个类中的多个方法中都要用到某一个数据成中的多个方法中都要用到某一个数据成员;且且该成成员值必必须从其他从其他类中中传递过来;来;l重重载实例构造函数的形式:例构造函数的形式:不需要添加任何不需要添加任何说明符;明符;与默与默认构造函数相似;构造函数相似;u代代码中没有初始化的非静中没有初始化的非静态成成员,仍然采用默,仍然采用默认值初始化;初始化;具有参数,用于具有参数,用于传入某些数据成入某些数据成员的的值;12 七月 202413重重载载构构造造函函数数举举例例using System;using System.Collections.Generic;using System.Text;namespace OverloadingExample class Program public Program()Console.WriteLine(null);public Program(string str)Console.WriteLine(str);static void Main()Program aa=new Program();Program bb=new Program(How are you!);Console.ReadLine();构造函数的类型构造函数的类型l实例构造函数实例构造函数负责初始化类中的实例变量;负责初始化类中的实例变量;默认构造函数:系统自动提供;默认构造函数:系统自动提供;重载构造函数:程序员自己定义;重载构造函数:程序员自己定义;l静态构造函数静态构造函数负责初始化一些静态变量;负责初始化一些静态变量;静态构造函数静态构造函数只会执行一次只会执行一次,在创建第一个实例或引用任何静,在创建第一个实例或引用任何静态成员之前,由编译器自动调用;态成员之前,由编译器自动调用;一个类中只能有一个静态构造函数,若未显式定义,则系统会一个类中只能有一个静态构造函数,若未显式定义,则系统会自动提供;自动提供;静态构造函数不需要访问修饰符,只用静态构造函数不需要访问修饰符,只用static说明符即可;说明符即可;典型用途:对类使用日志文件时,使用此构造函数写入日志项。典型用途:对类使用日志文件时,使用此构造函数写入日志项。12 七月 202414静态构造函数例题静态构造函数例题雅虎面试题雅虎面试题l程序代码程序代码l在在Main方法中添加方法中添加Aa=newA();执行完毕后,执行完毕后,A.counter的值是多少?的值是多少?l继续添加继续添加Aobj=newA();运行后,运行后,A.counter的值是多少?的值是多少?12 七月 202415class A public static int counter;static A()counter+;public A()counter+;23析构函数析构函数l析构函数在析构函数在类撤撤销时运行,常用来运行,常用来处理理类用完后的收尾工作;用完后的收尾工作;l析构函数的定析构函数的定义形式:形式:l析构函数的特点:析构函数的特点:不能不能带有参数;有参数;不能不能拥有有访问修修饰符;符;不能被不能被显式式调用;用;lC#程序中一般不需要自定程序中一般不需要自定义析构函数,由析构函数,由编译器在适当的器在适当的时候,候,调用默用默认的析构函数,回收内存和各的析构函数,回收内存和各类对象;象;12 七月 202416类名类名()处理代码处理代码;12 七月 2024174.1.3字段和局部变量字段和局部变量l字段字段声明为类一级的对象或值类型的变量。声明为类一级的对象或值类型的变量。l局部变量局部变量在方法、事件以及构造函数内声明的变量。在方法、事件以及构造函数内声明的变量。publicclassProgrampublicstaticintj=20;/字段字段publicstaticvoidMain()intj=30;/局部变量局部变量Console.WriteLine(j);/输出结果:输出结果:30Console.WriteLine(Program.j);/输出结果:输出结果:20Console.ReadLine();12 七月 202418字段和局部变量名的引用字段和局部变量名的引用l若字段和局部若字段和局部变量名相同:量名相同:字段的引用字段的引用u静静态字段:字段:类名名.字段名字段名;实例字段:例字段:this.字段名字段名;局部局部变量的引用量的引用u直接使用局部直接使用局部变量名;量名;l若字段和局部若字段和局部变量名不相同:量名不相同:字段和局部字段和局部变量的引用,都直接使用字段名和局部量的引用,都直接使用字段名和局部变量名。量名。12 七月 2024194.1.4静态成员与实例成员静态成员与实例成员l类的成员分静态成员和实例成员类的成员分静态成员和实例成员静态成员静态成员u从属于类,而不是某个具体的对象,其值被该类的所有对象从属于类,而不是某个具体的对象,其值被该类的所有对象所共享;所共享;u静态成员在内存中只有一份,当应用程序结束时释放;静态成员在内存中只有一份,当应用程序结束时释放;u静态成员的初始化,在静态成员的初始化,在MainMain函数之前执行;函数之前执行;实例成员实例成员u只有创建了类的实例才能够使用的成员;只有创建了类的实例才能够使用的成员;u每个实例成员只属于该实例,即有多少个实例,就有多少个每个实例成员只属于该实例,即有多少个实例,就有多少个实例成员;实例成员;l静态方法中只能使用静态对象,而不能使用实例对象;静态方法中只能使用静态对象,而不能使用实例对象;l实例方法中既可以使用静态对象,也可以使用实例对象;实例方法中既可以使用静态对象,也可以使用实例对象;12 七月 2024204.1.5访问修饰符访问修饰符lPublic(常用)(常用)任何外部的类都可以不受限制的存取这个类的方法和数据成员。任何外部的类都可以不受限制的存取这个类的方法和数据成员。lPrivate(常用、默认)(常用、默认)类中的所有方法和数据成员只能在此类中使用,外部无法存取。类中的所有方法和数据成员只能在此类中使用,外部无法存取。lProtected除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。lInternal在当前项目中都可以存取。在当前项目中都可以存取。该访问权限一般用于基于组件的开发,因为它可以使组件以私有方式该访问权限一般用于基于组件的开发,因为它可以使组件以私有方式工作,而该项目外的其它代码无法访问。工作,而该项目外的其它代码无法访问。lProtectedinternal只限于当前项目,或者从该项目的类继承的类才可以存取。只限于当前项目,或者从该项目的类继承的类才可以存取。补充:声明修饰符补充:声明修饰符lPartial局部局部类型,型,类的定的定义和和实现可以分布在多个文件中,但都要使用可以分布在多个文件中,但都要使用partial标注,基注,基类只需要声明一次,若多次声明只需要声明一次,若多次声明则必必须完全一致。完全一致。lnew:从基:从基类成成员隐藏藏继承的成承的成员;lstatic:静:静态成成员的声明;的声明;lvirtual:派生:派生类中可重写;中可重写;loverride:对基基类的虚的虚拟成成员的重写;的重写;lsealed:密封的,不可被:密封的,不可被继承;承;labstract:抽象:抽象类,只能作,只能作为基基类,不能,不能实例化;例化;lextern:外部:外部实现方法;方法;12 七月 20242112 七月 2024224.2结构(构(struct)l结构类型属于值类型结构类型属于值类型结构是将一系列相关的、但类型不一定相同的变量组织在一起结构是将一系列相关的、但类型不一定相同的变量组织在一起而构成的数据表示形式;而构成的数据表示形式;C#中的结构:中的结构:DateTime/TimeSpan/Point/Int32/Double等;等;l结构类型的声明语法结构类型的声明语法与类声明相似;与类声明相似;结构体内可定义字段、方法等;结构体内可定义字段、方法等;u只有字段被声明为只有字段被声明为const或或static,才能在声明时初始化;,才能在声明时初始化;不能声明默认的没有参数的构造不能声明默认的没有参数的构造函数或析构函数。函数或析构函数。l结构类型的声明举例:结构类型的声明举例:访问修饰符访问修饰符struct结构名结构名.publicstructPointpublicintx;publicinty;publicstrings;结构类型对象的创建结构类型对象的创建l使用使用new运算符运算符创建该结构对象,并调用适当创建该结构对象,并调用适当的构造函数进行初始化;的构造函数进行初始化;举例:举例:l不使用不使用new运算符运算符不会自动调用任何构造函数;不会自动调用任何构造函数;u即所有字段都未赋值,必须在即所有字段都未赋值,必须在程序代码中手动赋值,否则不程序代码中手动赋值,否则不可用;可用;12 七月 202423CoOrds结构定义结构定义publicstructCoOrdspublicintx,y;publicCoOrds(intp1,intp2)x=p1;y=p2;CoOrdscoords1=newCoOrds();CoOrdscoords2=newCoOrds(10,10);CoOrdscoords1;coords1.x=10;coords1.y=20;结构和类的区别与联系结构和类的区别与联系l结构是构是值类型,而型,而类是引用是引用类型;型;但但结构也可以用构也可以用new运算符来运算符来实例化;例化;l结构可以声明构造函数,但必构可以声明构造函数,但必须带参数;参数;l凡是定凡是定义为结构的,都可以用构的,都可以用类来定来定义。创建建轻量量级对象象时,可以使用,可以使用结构,提高程序的构,提高程序的执行效率。行效率。l结构直接构直接继承自承自System.ValueType,类继承自承自System.Object。l结构不存在构不存在继承和派生的关系;承和派生的关系;即一个即一个结构不能从另一个构不能从另一个结构或构或类继承,而且不能作承,而且不能作为一个一个结构或构或类的基的基类。12 七月 202424P70【例例4-4】类和结构的性能比较。类和结构的性能比较。12 七月 20242512 七月 2024264.3方法方法l方法(方法(Method)按照一定格式按照一定格式组织的一段程序代的一段程序代码,用于完成指定的功能;,用于完成指定的功能;每个方法都有一个方法名,便于每个方法都有一个方法名,便于识别和和让其他方法其他方法调用。用。l有关方法有关方法1.方法的定方法的定义与与调用用2.静静态方法和方法和实例方法例方法3.方法的参数方法的参数传递u传递值类型的参数型的参数u传递引用引用类型的参数型的参数u输出多个引用出多个引用类型的参数型的参数u传递个数不确定的参数个数不确定的参数4.方法的重方法的重载12 七月 2024271、方法的定义与调用、方法的定义与调用l方法的定义必须封装在某个类中。方法的定义必须封装在某个类中。l定义方法的语法形式为:定义方法的语法形式为:访问修饰符访问修饰符返回值类型返回值类型方法名称(方法名称(参数序列参数序列)语句序列语句序列l定义方法时,需要注意以下几点:定义方法时,需要注意以下几点:方法名称自定义,但不能和任何声明在类中的其它成员相同;方法名称自定义,但不能和任何声明在类中的其它成员相同;方法的参数可以为方法的参数可以为0多个,若有多个参数,则以逗号分隔;多个,若有多个参数,则以逗号分隔;u方法不论是否有参数,小括号都是必需的。方法不论是否有参数,小括号都是必需的。返回值若不为返回值若不为void的,则在方法体内必须使用的,则在方法体内必须使用return返回值;返回值;ureturn语句结束某个方法的执行,同时返回结果值;语句结束某个方法的执行,同时返回结果值;u需要返回值的方法,必须所有代码路径都有返回值;需要返回值的方法,必须所有代码路径都有返回值;12 七月 202428方方法法的的定定义义与与使使用用举举例例using System;class Program public int MyMethod()Console.WriteLine(this is MyMethod.);int i=10;return i;static void Main()Program method=new Program();int j=5;j=method.MyMethod();Console.WriteLine(the value is 0.,j);2、静态方法和实例方法、静态方法和实例方法l静态方法静态方法定义时使用定义时使用static说明符;说明符;在定义类中,可直接使用方法名调用;在定义类中,可直接使用方法名调用;在其他类中,使用在其他类中,使用“类名类名.方法名方法名”的形式调用;的形式调用;l实例方法实例方法不需要特殊的说明符;不需要特殊的说明符;在定义类中,可直接使用方法名,或在定义类中,可直接使用方法名,或“this.方法名方法名”的的形式调用;形式调用;在其他类中,必须先做实例化,使用在其他类中,必须先做实例化,使用“对象名对象名.方法名方法名”的形式调用;的形式调用;12 七月 20242912 七月 2024303、方法中的参数传递方法中的参数传递(1/4)传递值类型的参数传递值类型的参数l值类型参数的格式为:值类型参数的格式为:参数类型参数类型 参数名参数名l举例:举例:publicstaticvoidAddOne(intx)x+;Console.WriteLine(方法方法AddOne中,中,x=0,x);staticvoidMain()inta=3;Console.WriteLine(调用调用AddOne之前,之前,a=0,a);AddOne(a);Console.WriteLine(调用调用AddOne之后,之后,a=0,a);Console.ReadLine();方法方法AddOne在调用时在调用时重重新分配了内新分配了内存空间存空间,之,之传值,不影传值,不影响原数据;响原数据;12 七月 2024313、方法中的参数传递方法中的参数传递(2/4)传递引用类型的参数传递引用类型的参数l引用类型参数的格式为:引用类型参数的格式为:ref参数类型参数类型参数参数l举例:举例:classProgrampublicstaticvoidAddOne(refintx)x+;staticvoidMain()inta=3;Console.WriteLine(调用调用AddOne之前,之前,a=0,a);AddOne(refa);Console.WriteLine(调用调用AddOne之后,之后,a=0,a);Console.ReadLine();ref传递的是指向原变量传递的是指向原变量的地址,没有为参数重的地址,没有为参数重新分配空间;新分配空间;有关引用类型的参数有关引用类型的参数l传递值类型型的参数的参数不加不加ref,方法中,方法中对参数的修改,不会影响原参数的修改,不会影响原值;若加若加ref,参数,参数值会随着方法中的修改而会随着方法中的修改而变化;化;l传递引用引用类型的参数型的参数参数前加不加参数前加不加ref,方法,方法执行后,参数的行后,参数的值都会跟着方法都会跟着方法执行的行的结果而改果而改变;例外:字符串例外:字符串string类型型u若要方法中修改若要方法中修改string类型的型的值,参数前必,参数前必须加加ref;u原因:原因:string类型的型的变量修改量修改时是重新分配空是重新分配空间的;的;12 七月 202432publicstaticvoidAddOne(refintx,refstrings,inta)x+;s+=de;for(inti=0;ia.Length;i+)ai+;staticvoidMain()inti=1;stringss=abc;intia=1,2,3;AddOne(refi,refss,ia);Console.WriteLine(0,1,2,i,ss,ia0);Console.ReadLine();引引用用类类型型的的参参数数传传递递举举例例12 七月 20243312 七月 2024343、方法中的参数传递方法中的参数传递(3/4)输出多个引用类型的参数输出多个引用类型的参数l输出引用类型参数的格式为:输出引用类型参数的格式为:out参数类型参数类型参数名参数名若方法中需要返回多于若方法中需要返回多于1个的结果值时,可使用个的结果值时,可使用out关键字;关键字;将返回值作为参数,且将返回值作为参数,且out参数不需要具有初始值参数不需要具有初始值;l举例举例publicstaticvoidMyMethod(outinta,outintb)a=5;b=6;staticvoidMain()intx,y;MyMethod(outx,outy);Console.WriteLine(调用调用MyMethod之后,之后,x=0,y=1,x,y);Console.ReadLine();12 七月 202435ref参数传递与参数传递与out参数传递异同点参数传递异同点l相同点相同点都是传递引用类型的参数,编译器处理时没有区别;都是传递引用类型的参数,编译器处理时没有区别;l不同点不同点ref参数使用前必须要初始化;参数使用前必须要初始化;out参数使用前不必初始化;参数使用前不必初始化;l注意:注意:public void AddOne(ref int x)public void AddOne(out int x)上面这两个方法,不是重载方法上面这两个方法,不是重载方法。12 七月 2024363、方法中的参数传递(方法中的参数传递(3/4)传递个数不确定的参数传递个数不确定的参数l需要需要传递的参数个数不确定的参数个数不确定时,可以采用,可以采用params关关键字,其字,其后一般跟一个数后一般跟一个数组。l举例:例:publicstaticfloatAverage(paramslongv)longtotal,i;for(i=0,total=0;i0)number=value;public class Program public static void Main()MyClass me=new MyClass();Console.WriteLine(me.MyNumber);me.MyNumber=5;Console.WriteLine(me.MyNumber);Console.ReadLine();若程序中做如下赋值:若程序中做如下赋值:me.Number=-1;则则me.Number的值为多少?的值为多少?P76【例例4-11】属性的声明和用法。属性的声明和用法。12 七月 20244212 七月 2024434.4.2索引器索引器l索引器索引器用于封装内部集合或数用于封装内部集合或数组。便于程序便于程序员将将类、结构或接口作构或接口作为数数组进行行访问。l索引器的声明索引器的声明语法法l举例:例:访问修修饰符符返回返回值数据数据类型型this索引的数据索引的数据类型型index/getandsetaccessorsstring days=Sun,Mon,Tues,Wed,Thurs,Fri,Sat;public int thisstring day get return(GetDay(day);public string thisint i get return(daysi);12 七月 202444P78【例例4-12】索引器的声明和用法。索引器的声明和用法。12 七月 202445本章相关面试题本章相关面试题 选择题选择题1.以下关于以下关于ref和和out的描述哪些的描述哪些项是正确的?是正确的?(多多选)A.使用使用ref参数,参数,传递到到ref参数的参数必参数的参数必须最先初始化。最先初始化。B.使用使用out参数,参数,传递到到out参数的参数必参数的参数必须最先初始化。最先初始化。C.使用使用ref参数,必参数,必须将参数作将参数作为ref参数参数显式式传递到方法。到方法。D.使用使用out参数,必参数,必须将参数作将参数作为out参数参数显式式传递到方法。到方法。ACD2.下列关于构造函数的描述正确的是(下列关于构造函数的描述正确的是(单选)A.构造函数可以声明返回构造函数可以声明返回类型。型。B.构造函数不可以用构造函数不可以用private修修饰C.构造函数必构造函数必须与与类名相同名相同D.构造函数不能构造函数不能带参数参数C12 七月 202446读程序写出运行结果读程序写出运行结果classClass1privatestringstr=Class1.str;privateinti=0;staticvoidStringConvert(stringstr)str=stringbeingconverted.;staticvoidStringConvert(Class1c)c.str=stringbeingconverted.“;staticvoidAdd(inti)i+;staticvoidAddWithRef(refinti)i+;staticvoidMain()inti1=10;inti2=20;stringstr=str;Class1c=newClass1();Add(i1);AddWithRef(refi2);Add(c.i);StringConvert(str);StringConvert(c);Console.WriteLine(i1);Console.WriteLine(i2);Console.WriteLine(c.i);Console.WriteLine(str);Console.WriteLine(c.str);p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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