C_面向对象程序设计_第1页
C_面向对象程序设计_第2页
C_面向对象程序设计_第3页
C_面向对象程序设计_第4页
C_面向对象程序设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院第第4 4章章 C#C#面向对象程序设计面向对象程序设计4.1 C#4.1 C#面向对象程序设计基础面向对象程序设计基础一、类与对象一、类与对象 1 1、类的声明、类的声明 格式:格式: 类修饰符类修饰符 class class 类名类名:基类类名基类类名,接口列表接口列表 类成员类成员; ; 几点说明:几点说明:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 (1 1)类修饰符有:)类修饰符有:newnew、publicpublic、protectedprot

2、ected、privateprivate、internalinternal、abstractabstract、sealedsealed、partialpartial。 new new 仅允许在嵌套类声明时使用,表明类中隐藏了由基类中仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的与基类中同名的成员类。继承而来的与基类中同名的成员类。 例例4-1 4-1 用用newnew修饰符隐藏基类中的成员类。修饰符隐藏基类中的成员类。 publicpublic 表明类可由任何其他类型访问。它和表明类可由任何其他类型访问。它和javajava语言中的语言中的publicpublic修饰符的用法类似。

3、修饰符的用法类似。 protectedprotected 一般在嵌套类声明时使用,表示可以在外层类或外层类一般在嵌套类声明时使用,表示可以在外层类或外层类的子类中使用。的子类中使用。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 privateprivate 一般在嵌套类声明时使用,被一般在嵌套类声明时使用,被privateprivate关键字修饰的关键字修饰的内层类只能在外层类范围内使用内层类只能在外层类范围内使用 internalinternal 表明类是一个内部类,内部类必须和访问类在同一程表明类是一个内部类,内部类必须和访问类在同一程序集中,

4、否则访问类不能访问用序集中,否则访问类不能访问用internalinternal修饰的类。修饰的类。 例如:例如: / Assembly1.cs ,/ Assembly1.cs ,编译成编译成Assembly1.dllAssembly1.dll internal class BaseClass internal class BaseClass public static int intM public static int intM = 0; = 0; / Assembly2.cs / Assembly2.cs, ,编译成编译成Assembly2.exeAssembly2.exeAutoCAD

5、计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 class TestAccessclass TestAccess static void Main() static void Main() BaseClass myBase = new BaseClass BaseClass myBase = new BaseClass(); (); / Error / Error abstract abstract 表明类是一个抽象类,抽象类不能实例化,只能用作表明类是一个抽象类,抽象类不能实例化,只能用作其他类的基类。抽象类的用途是提供多个派生类可共享的其他类的基类。抽象类的用

6、途是提供多个派生类可共享的基类的公共定义,抽象类中的成员方法只声明不实现。该基类的公共定义,抽象类中的成员方法只声明不实现。该修饰符的用法与修饰符的用法与javajava语言相同。语言相同。 sealedsealed AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 表明类是一个密封类。密封类不能用作基类,因而关表明类是一个密封类。密封类不能用作基类,因而关键字键字sealedsealed和和abstractabstract不能同时使用。不能同时使用。 partial partial 表明类是一个分部类,分部类允许把类定义拆分到多表明类是一个分部类,分

7、部类允许把类定义拆分到多个文件中。个文件中。 (2)(2)类修饰符可以两个或多个组合起来使用。如果省略类修饰符可以两个或多个组合起来使用。如果省略类修饰符,则默认为私有修饰符类修饰符,则默认为私有修饰符privateprivate。 (3)(3)一个类的基类只能有一个(即单继承),但一个类一个类的基类只能有一个(即单继承),但一个类可以实现多个接口。可以实现多个接口。 (4)(4)C#C#中所有的类都直接或间接继承自中所有的类都直接或间接继承自System.ObjectSystem.Object类类 2 2、对象的声明和实例化、对象的声明和实例化AutoCAD计算机辅助设计网络数据库编程技术网

8、络数据库编程技术 陕西理工学院陕西理工学院 (1)(1)对象的声明对象的声明 格式:格式: 类名类名 对象名对象名; ; 作用:作用: 声明一个对象变量。声明一个对象变量。 (2)(2)对象实例化对象实例化 格式:格式: new new 类名类名(实参列表实参列表) 作用作用: :调用类的构造函数创建一个对象实例。调用类的构造函数创建一个对象实例。 对象的声明和对象实例化结合起来用下面形式:对象的声明和对象实例化结合起来用下面形式:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 类名类名 对象名对象名=new =new 类名类名(实参列表实参列表)

9、例如:例如: class Aclass A A a=new A(); A a=new A(); 3 3、类成员、类成员 (1)(1)类成员分类类成员分类 在在c#c#中类成员有以下几种:中类成员有以下几种:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 常量:代表与类相关的常量值;常量:代表与类相关的常量值; 变量:类中的成员变量。变量:类中的成员变量。 方法:完成类的各种功能。方法:完成类的各种功能。 属性:用来封装类的域。利用属性完成对类的域的读属性:用来封装类的域。利用属性完成对类的域的读写操作写操作 事件:由类产生的通知,用于说明发生了什么事

10、情。事件:由类产生的通知,用于说明发生了什么事情。 索引指示器:索引器允许类的实例按照与数组相同的索引指示器:索引器允许类的实例按照与数组相同的方式进行索引,又称下标指示器。方式进行索引,又称下标指示器。 运算符:定义类对象能使用的操作符。运算符:定义类对象能使用的操作符。 类型:属于类的局部类型。类型:属于类的局部类型。 构造函数:在类被实例化的同时被执行的成员函数,构造函数:在类被实例化的同时被执行的成员函数,主要是完成对象初始化操作。主要是完成对象初始化操作。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 析构函数:在类被删除之前最后执行的成员

11、函数,主析构函数:在类被删除之前最后执行的成员函数,主要是完成对象结束时的收尾操作。要是完成对象结束时的收尾操作。 (2)(2)静态成员和非静态成员静态成员和非静态成员 声明一个类成员时使用了声明一个类成员时使用了staticstatic关键字,则该类成员关键字,则该类成员叫做静态成员,反之叫非静态成员。叫做静态成员,反之叫非静态成员。 静态成员和非静态成员的区别:静态成员和非静态成员的区别: 性质不同性质不同 静态成员属于类所有,非静态成员属于类的对象所有。静态成员属于类所有,非静态成员属于类的对象所有。 访问方式不同访问方式不同 静态成员访问方式:静态成员访问方式: 类名类名. .成员名成

12、员名(参数列表参数列表)AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 非静态成员访问方式:非静态成员访问方式: 对象名对象名. .成员名成员名(参数列表参数列表) 静态成员方法和非静态成员方法访问类成员不同静态成员方法和非静态成员方法访问类成员不同 静态成员方法只能访问类的静态成员,非静态成员方静态成员方法只能访问类的静态成员,非静态成员方法既可访问类的静态成员,也可访问类的非静态成员。法既可访问类的静态成员,也可访问类的非静态成员。 例例4-2 4-2 静态成员和非静态成员的访问。静态成员和非静态成员的访问。 (3)(3)类成员访问修饰符类成员访

13、问修饰符 在在C#C#中类成员访问修饰符有:中类成员访问修饰符有: publicpublic、protectedprotected、privateprivate、internalinternal。 public public 表明类成员是公有成员。公有成员访问不受限制,可表明类成员是公有成员。公有成员访问不受限制,可AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院以在类内和类外的代码中访问。公有成员提供了类的外部以在类内和类外的代码中访问。公有成员提供了类的外部接口。接口。 protectedprotected 表明类成员是保护成员。保护成员可访问域限

14、定于类表明类成员是保护成员。保护成员可访问域限定于类内或从该类派生的类内,不允许类外代码访问。内或从该类派生的类内,不允许类外代码访问。 privateprivate 表明类成员是私有成员。私有成员可访问域限定于类表明类成员是私有成员。私有成员可访问域限定于类内,不允许类外和派生类访问。内,不允许类外和派生类访问。 internalinternal 表明类成员是内部成员。内部成员可访问域限定于类表明类成员是内部成员。内部成员可访问域限定于类所在的程序集。所在的程序集。 例例4-3 4-3 类成员访问修饰符的使用。类成员访问修饰符的使用。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编

15、程技术 陕西理工学院陕西理工学院 4 4、thisthis关键字关键字 thisthis关键字表示引用类的当前实例。关键字表示引用类的当前实例。 thisthis关键字的常用用途关键字的常用用途: : 限定被相似的名称隐藏的成员。限定被相似的名称隐藏的成员。 将将thisthis对象作为参数传递到其他方法。对象作为参数传递到其他方法。 声明索引器。声明索引器。 例例4-4 this4-4 this关键字的使用。关键字的使用。二、类的构造与析构函数二、类的构造与析构函数 1 1、构造函数、构造函数 (1)(1)构造函数的特点构造函数的特点 构造函数主要用于为对象分配存储空间,并对数据成员构造函数

16、主要用于为对象分配存储空间,并对数据成员AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院进行初始化。构造函数具有如下特点:进行初始化。构造函数具有如下特点: 构造函数的名字必须与类同名;构造函数的名字必须与类同名; 构造函数没有返回类型构造函数没有返回类型, ,它可以带参数它可以带参数, ,也可以不带也可以不带参数;参数; 构造函数的主要作用是完成对类的初始化工作;构造函数的主要作用是完成对类的初始化工作; 在创建一个类的对象在创建一个类的对象( (使用使用newnew关键字关键字) )时,编译系统时,编译系统回自动调用类的构造函数初始化对象;回自动调

17、用类的构造函数初始化对象; (2)(2)实例构造函数实例构造函数 负责初始化类中的实例变量(非静态变量),它只有负责初始化类中的实例变量(非静态变量),它只有在用户用在用户用newnew关键字为对象分配内存时才被调用。实例构关键字为对象分配内存时才被调用。实例构造函数可以重载。造函数可以重载。 (3)(3)静态构造函数静态构造函数AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 静态构造函数用来初始化类的一些静态成员变量。它仅静态构造函数用来初始化类的一些静态成员变量。它仅在创建第一个实例或引用任何静态成员之前,由编译系统在创建第一个实例或引用任何静态

18、成员之前,由编译系统自动调用,静态构造函数只会被调用一次。自动调用,静态构造函数只会被调用一次。 在使用静态构造函数的时候应该注意几点:在使用静态构造函数的时候应该注意几点: 静态构造函数既没有访问修饰符,也没有参数。静态构造函数既没有访问修饰符,也没有参数。 一个类只能有一个静态构造函数。一个类只能有一个静态构造函数。 无参数的构造函数可以与静态构造函数共存。无参数的构造函数可以与静态构造函数共存。 静态构造函数最多只运行一次。静态构造函数最多只运行一次。 静态构造函数不可以被继承。静态构造函数不可以被继承。 如果在一个类中既没有定义实例构造函数,又没有定义如果在一个类中既没有定义实例构造函

19、数,又没有定义静态构造函数,则系统会给类自动生成一个实例构造函数静态构造函数,则系统会给类自动生成一个实例构造函数AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院和静态构造函数。和静态构造函数。 例例4-5 4-5 构造函数的使用。构造函数的使用。 2 2、析构函数、析构函数 析构函数在类撤销时运行,常用来处理类用完后的内存析构函数在类撤销时运行,常用来处理类用完后的内存的回收工作。的回收工作。 使用析构函数使用析构函数时应注意:时应注意: 析构函数不能带有参数;析构函数不能带有参数; 析构函数不能拥有访问修饰符析构函数不能拥有访问修饰符; ; 并且不

20、能显式地被调用,一个对象实例的析构函数在并且不能显式地被调用,一个对象实例的析构函数在该对象被撤销时自动调用;该对象被撤销时自动调用; 析构函数不能被继承和重载;析构函数不能被继承和重载;AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 如果类没有析构函数,编译系统就自动调用默认的如果类没有析构函数,编译系统就自动调用默认的析构函数。析构函数。 在在C#C#中,系统提供了垃圾收集器帮助用户完成内存的中,系统提供了垃圾收集器帮助用户完成内存的回收工作,因而一般情况下不需要定义析构函数回收工作,因而一般情况下不需要定义析构函数。 AutoCAD计算机辅助设

21、计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院4.2 4.2 域、属性与事件域、属性与事件一、域一、域 域又称成员变量。域又称成员变量。 1 1、域声明格式:、域声明格式: 域修饰符域修饰符 类型类型 域名域名; ; 域的修饰符有:域的修饰符有:newnew、publicpublic、protectedprotected、internalinternal、privateprivate、staticstatic和和readonlyreadonly。修饰符。修饰符publicpublic、protectedprotected、internalinternal、privatepri

22、vate和和staticstatic的用法在前面已讲过。的用法在前面已讲过。 newnew new new修饰符可以显式隐藏从基类继承的同名成员。修饰符可以显式隐藏从基类继承的同名成员。 例如:例如:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 public class BaseCpublic class BaseC public static int x = 55; public static int x = 55; class class DerivedCDerivedC: :BaseC BaseC new public static int

23、x = 100; new public static int x = 100; static void Main(string args) static void Main(string args) Console.WriteLine(x); Console.WriteLine(x); AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 readonly readonly 表明域为只读域。只读域只能在域的定义中和它所属表明域为只读域。只读域只能在域的定义中和它所属类的构造函数中进行修改,在其他情况下是只读的。类的构造函数中进行修改,在其他情况下是只读的。

24、 例如:例如: class myClassclass myClass public readonly public readonly double PI=3.14159; double PI=3.14159; 2 2、域的初始化、域的初始化AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 在在C#C#对域初始化有两种方法:对域初始化有两种方法: 对域声明时初始化。对域声明时初始化。 例如:例如: class myClassclass myClass public int public int x=100; x=100; 在构造函数中初始化。在构造函数中

25、初始化。二、属性二、属性AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 属性是类中的成员,用来读写私有域的值。属性是类中的成员,用来读写私有域的值。 1 1、属性的声明、属性的声明 属性声明的格式:属性声明的格式: 属性修饰符属性修饰符 属性的类型属性的类型 属性名属性名 set set写私有域语句写私有域语句 get get读私有域语句读私有域语句 (1) (1)属性修饰符属性修饰符 属性修饰符有:属性修饰符有:newnew、publicpublic、protectedprotected、internalinternal、privateprivat

26、e、staticstatic、virtualvirtual、overrideoverride和和abstractabstract。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 修饰符修饰符newnew、publicpublic、protectedprotected、internalinternal、privateprivate、staticstatic和和abstractabstract的用法和前面讲的用法基本类似,只是的用法和前面讲的用法基本类似,只是现在用于属性。现在用于属性。 用用virtualvirtual修饰属性表明该属性是虚拟属性,虚拟

27、属性修饰属性表明该属性是虚拟属性,虚拟属性可在派生类中重写该属性。可在派生类中重写该属性。overrideoverride只能用在派生类中修只能用在派生类中修饰重写的属性。饰重写的属性。 例如:例如: class Aclass A int pvalue = 1; int pvalue = 1; public virtual int P public virtual int P AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 get return pvalue; get return pvalue; set pvalue = value; set pv

28、alue = value; class B : A class B : A public override int P public override int P get return base.P; get return base.P; setbase.P = value; setbase.P = value; AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 (2)set (2)set访问器访问器 setset访问器用来写私有域的值,因而至少包含语句:访问器用来写私有域的值,因而至少包含语句: 私有域名私有域名=value;=value; (3)g

29、et (3)get访问器访问器 getget访问器用来读私有域的值,因而至少包含语句:访问器用来读私有域的值,因而至少包含语句: return return 私有域名私有域名; ; 2 2、属性的访问、属性的访问 静态属性的访问格式:静态属性的访问格式:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 类名类名. .属性名属性名 非静态属性的访问格式:非静态属性的访问格式: 对象名对象名. .属性名属性名 例例4-6 4-6 属性的使用属性的使用三、事件三、事件 事件是类在发生其关注的事情时用来通知操作的一种方事件是类在发生其关注的事情时用来通知操作的

30、一种方式。引发事件的操作可能是用户交互(例如鼠标单击),式。引发事件的操作可能是用户交互(例如鼠标单击),也可能是某些其他的程序逻辑。引发(触发)事件的对象也可能是某些其他的程序逻辑。引发(触发)事件的对象叫做事件发送方。捕获事件并对其做出响应的对象叫做事叫做事件发送方。捕获事件并对其做出响应的对象叫做事件接收方。件接收方。 1 1、事件的声明、事件的声明 事件声明的格式:事件声明的格式:AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 事件修饰符事件修饰符 event event 委托类型名委托类型名 事件名事件名; ; 从事件声明的格式来看,声明事

31、件前必须声明一个委从事件声明的格式来看,声明事件前必须声明一个委托类型名。在命名空间托类型名。在命名空间SystemSystem中预定义了一些委托类型中预定义了一些委托类型, ,其中最常见的是其中最常见的是EventHandlerEventHandler,其声明是:,其声明是: public delegate void EventHandlerpublic delegate void EventHandler ( ( Object sender, Object sender, EventArgs EventArgs e) e) 事件修饰符有:事件修饰符有:newnew、publicpublic

32、、protectedprotected、internalinternal、privateprivate和和staticstatic,这些修饰符的用法和前面讲的类似,这些修饰符的用法和前面讲的类似,只不过现在用于事件。只不过现在用于事件。 2 2、事件的订阅与取消、事件的订阅与取消 (1)(1)事件订阅的格式事件订阅的格式AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 对象名对象名. .事件名事件名+=new +=new 委托类型名委托类型名( (事件处理函数名事件处理函数名);); (2) (2)事件取消的格式事件取消的格式 对象名对象名. .事件名

33、事件名-=new -=new 委托类型名委托类型名( (事件处理函数名事件处理函数名);); 例例4-7 4-7 事件的使用事件的使用 3 3、事件编程的内容、事件编程的内容 从例从例4-74-7可以看出,事件编程包含以下内容:可以看出,事件编程包含以下内容: 在事件类中声明一个委托。在事件类中声明一个委托。 在事件类中声明事件。在事件类中声明事件。 在事件类中定义触发事件的方法。在事件类中定义触发事件的方法。 在事件类的属性或方法中触发事件。在事件类的属性或方法中触发事件。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 在访问事件类的程序中定义事件

34、处理函数。在访问事件类的程序中定义事件处理函数。 在访问事件类的程序中订阅事件。在访问事件类的程序中订阅事件。 .NET Framework.NET Framework类库中的类预定义了一些事件,对这类库中的类预定义了一些事件,对这些预定义的事件,只需要在访问类的程序中定义事件处理些预定义的事件,只需要在访问类的程序中定义事件处理函数和订阅事件。函数和订阅事件。 在在Windows FormsWindows Forms应用程序中事件订阅的格式:应用程序中事件订阅的格式: 对象名对象名. .事件名事件名+=new +=new 定义事件的委托类型名定义事件的委托类型名 ( (事事件处理函数名件处理

35、函数名); ); 在在ASP.NetASP.Net应用程序中事件订阅的格式:应用程序中事件订阅的格式: asp:/AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院4.3 4.3 方法方法一、方法的声明一、方法的声明 (1)(1)方法声明的格式:方法声明的格式: 方法修饰符方法修饰符 返回类型返回类型 方法名方法名( (参数列表参数列表) ) 方法实现部分方法实现部分 (2) (2)方法修饰符方法修饰符 方法修饰符有方法修饰符有:new:new、publicpublic、protectedprotected、internalinternal、privat

36、eprivate、staticstatic、virtualvirtual、sealedsealed、overrideoverride、abstractabstract和和externextern。其中修饰符。其中修饰符newnew、publicpublic、protectedprotected、internalinternal、privateprivate、staticstatic、virtualvirtual、overrideoverride和和AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院abstractabstract的用法和前面讲的类似,只不

37、过现在用于方法。的用法和前面讲的类似,只不过现在用于方法。 sealedsealed 表明方法是密封方法。密封方法在派生类中不能被重表明方法是密封方法。密封方法在派生类中不能被重写。写。 externextern 表明方法是外部方法。表明方法是外部方法。externextern常用于在非托管代码中常用于在非托管代码中调用调用DllDll文件中的函数使用。文件中的函数使用。二、方法的参数二、方法的参数 C#C#支持四种类型的参数,分别为:支持四种类型的参数,分别为: 值类型:不含任何修饰符;值类型:不含任何修饰符; 引用类型:使用引用类型:使用refref修饰符声明;修饰符声明;AutoCAD计

38、算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 输出参数:使用输出参数:使用outout修饰符声明;修饰符声明; 参数数组:使用参数数组:使用paramsparams修饰符声明。修饰符声明。 1 1、值类型参数传递、值类型参数传递 值类型参数传递也称为值传递,就是实参将其值传递值类型参数传递也称为值传递,就是实参将其值传递给形参,形参值的改变不会引起实参值的改变。给形参,形参值的改变不会引起实参值的改变。 例例4-8 4-8 值类型参数的使用。值类型参数的使用。 2 2、引用类型参数传递、引用类型参数传递 引用类型传递方式下,方法的参数以引用类型传递方式下,方法的参

39、数以refref修饰符声明,修饰符声明,实参将其引用传递到形参,即实参和形参共用相应的存储实参将其引用传递到形参,即实参和形参共用相应的存储空间,因而形参值的改变会引起实参值的改变。空间,因而形参值的改变会引起实参值的改变。 例例4-9 4-9 引用类型参数的使用。引用类型参数的使用。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 3 3、输出类型参数传递、输出类型参数传递 outout关键字会使参数通过引用来传递。这与关键字会使参数通过引用来传递。这与refref关键字关键字类似,不同之处在于类似,不同之处在于refref要求变量必须在传递之前进行

40、初要求变量必须在传递之前进行初始化。若要使用始化。若要使用outout参数,方法定义和调用方法都必须显参数,方法定义和调用方法都必须显式使用式使用outout关键字。使用关键字。使用outout关键字修饰形参,需要在方法关键字修饰形参,需要在方法返回之前给形参赋值。返回之前给形参赋值。 例如:例如: class OutExampleclass OutExample static void Method(out int static void Method(out int i) i) i = 44; i = 44;AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西

41、理工学院 static void Main() static void Main() int int value; value; Method(out value); Method(out value); Console.WriteLine(value); Console.WriteLine(value);/输出输出4444 4 4、数组类型参数传递、数组类型参数传递 数组可作为参数传递给方法。因为数组是引用类型,数组可作为参数传递给方法。因为数组是引用类型,所以方法可以更改元素的值。所以方法可以更改元素的值。 例例4-10 4-10 用选择法对用选择法对6 6个整数排序。个整数排序。三、方法

42、的重载三、方法的重载 方法的重载是指一组具有相似功能的方法具有相同的方法的重载是指一组具有相似功能的方法具有相同的方法名,只不过参数类型、参数个数和返回值类型不同。方法名,只不过参数类型、参数个数和返回值类型不同。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 例如:例如: class MyClassclass MyClass public static int max(int x,int public static int max(int x,int y) y) if(xy) if(xy) return x; return x; else else

43、 return y; return y; public static float max(float x,float y) public static float max(float x,float y)AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 if(xy) if(xy) return x; return x; else else return y; return y; 四、外部方法四、外部方法 extern extern 修饰符用于声明在外部实现的方法。修饰符用于声明在外部实现的方法。extern extern 修饰符的常见用法是在使用修饰符

44、的常见用法是在使用 InteropInterop 服务调入非托管代服务调入非托管代AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院码时与码时与DllImportDllImport属性一起使用,在这种情况下,该方法还属性一起使用,在这种情况下,该方法还必须声明为必须声明为 staticstatic。 例例4-11 4-11 以消息框的形式显示字符串。以消息框的形式显示字符串。五、运算符的重载五、运算符的重载 在在C#C#中,允许在一个类中重载标准运算符,目的在于可中,允许在一个类中重载标准运算符,目的在于可以用标准运算符运算该类的对象。以用标准运算符运算

45、该类的对象。 实现运算符重载,就是在类中定义一个成员方法,格式实现运算符重载,就是在类中定义一个成员方法,格式为:为: public static public static 类名类名 operatoroperator运算符运算符( (形参列表形参列表) ) AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 几点说明几点说明: : 方法必须用方法必须用publicpublic和和staticstatic修饰。修饰。 返回值类型必须是运算符重载所在的类。形参列表中返回值类型必须是运算符重载所在的类。形参列表中参数类型也必须是运算符重载所在的类。参数类型也

46、必须是运算符重载所在的类。 方法名必须是方法名必须是operatoroperator运算符。运算符。 可重载的运算符有:可重载的运算符有: 一元运算符:一元运算符:+ +、- -、! !、 、+、-、truetrue、falsefalse 二元运算符:二元运算符:+ +、- -、* *、/ /、% %、& &、| |、 、=、!=!=、 、 =、= 重载相等运算符重载相等运算符 (=) (=) 时,还必须重载不相等运算符时,还必须重载不相等运算符 (!=)(!=)。 运算符以及运算符以及 = = = 运算符也必须成对重运算符也必须成对重载载AutoCAD计算机辅助设计网络数据库

47、编程技术网络数据库编程技术 陕西理工学院陕西理工学院 例例4-12 4-12 定义复数类,重载定义复数类,重载+和和- -运算符,并编程测试。运算符,并编程测试。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院4.4 4.4 索引器索引器 索引器允许用户按照与数组相同的方式对类、结构或索引器允许用户按照与数组相同的方式对类、结构或接口进行索引。接口进行索引。 索引器定义格式:索引器定义格式: public public 类型类型 thisintthisint index index get get读域数组元素语句读域数组元素语句 set set写域数组

48、元素语句写域数组元素语句 例例4-13 4-13 索引器的使用。索引器的使用。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院4.5 4.5 继承与多态继承与多态一、派生类一、派生类 派生类也称子类,其定义格式:派生类也称子类,其定义格式: 类修饰符类修饰符 class class 类名类名: :基类类名基类类名,接口列表接口列表 类成员类成员; ; 几点说明:几点说明: (1)(1)类修饰符有:类修饰符有:newnew、publicpublic、protectedprotected、privateprivate、internalinternal、abstractabstract、sealedsealed、partialpartial。这些修饰符的用。这些修饰符的用法前面已经讲过。法前面已经讲过。AutoCAD计算机辅助设计网络数据库编程技术网络数据库编程技术 陕西理工学院陕西理工学院 (2) (2)一个类的基类只能有一个(即单继承),但一个类可一个类的基类只能有一个(即单继承),但一个类可以实现多个接口。以实现多个接口。 (3)(3)派生类可以继承基类中派生类可以继承基类中pub

温馨提示

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

评论

0/150

提交评论