Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07

上传人:E**** 文档编号:89350276 上传时间:2019-05-23 格式:PPT 页数:12 大小:170.50KB
返回 下载 相关 举报
Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07_第1页
第1页 / 共12页
Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07_第2页
第2页 / 共12页
Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07_第3页
第3页 / 共12页
Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07_第4页
第4页 / 共12页
Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07》由会员分享,可在线阅读,更多相关《Visual C# 2005程序设计教程 教学课件 ppt 作者 978-7-302-19477-4 ch07(12页珍藏版)》请在金锄头文库上搜索。

1、第7章 方法 本章要点: 方法的声明 方法的参数传递 方法的重载 操作符重载,7.1 方法的声明,方法应当声明在类的内部。它的声明格式为: 方法修饰符 返回类型 方法名(方法参数列表) 方法实现部分; ; 方法修饰符主要有new、public、protected、internal、private、static、virtual、sealed、override、abstract和extern等几种,其中: static:静态方法,类似于静态属性 virtual:虚拟方法, external:外部方法,7.2 方法的参数,任何方法都包含数量不一的参数。方法参数的参数包含在参数列表中,该列表中的参数称

2、为形式参数,调用这个方法时提供的参数叫实(值)参数, 除参数个数外,按照传递方式的不同,参数还分为不同的类型,C#支持四种类型的参数,分别为: 值类型:不含任何修饰符; 引用类型:使用ref修饰符声明; 输出参数:使用out修饰符声明; 参数数组:使用params修饰符声明。,7.2 方法的参数,7.2.1 值类型参数传递 采用值传递方式进行传递时,编译器首先将实参的值做一份拷贝,并且将此拷贝传递给被调用方法的形参。可以看出这种传递方式传递的仅仅是变量值的一份拷贝,或是为形参赋予一个值,而对实参并没有做任何的改变,同时在方法内对形参值的改变所影响的仅仅是形参,并不会对定义在方法外部的实参起任何

3、作用。C语言中经典的Swap函数说明的既是这个问题。,7.2 方法的参数,7.2.2 引用类型参数传递 引用类型传递方式下,方法的参数以ref修饰符声明。传递的参数实际上是实参的引用(索引),这种情况下形参和实参虽是两份相同值,但这些值本身并不表示目标数据,而是指向目标数据的引用,访问时通过这两个相同的引用找到的值理所当然的是同一数据值。所以在方法中的操作都是直接对实参所对应的数据进行的,而不是在方法中又从新定义一个新的引用;能够利用这种方式在方法调用时可以实现参数的双向传递即在方法内对参数的修改将被反应到方法的外部。 为了传递引用类型参数,必须在方法声明和方法调用中都明确地在参数前指定ref

4、关键字,并且实参变量在传递给方法前必须进行初始化。,7.2 方法的参数,7.2.3 输出类型参数传递 输出参数以out修饰符声明。和ref类似,他也是直接对实参进行操作。在方法声明和方法调用时都必须明确地指定out关键字。out参数声明方式不需要变量传递给方法前进行初始化,因为他的含义只是用作输出目的。但是,在方法返回前,必须对out参数进行赋值。该类型参数通常用在需要多个返回值的方法中。,7.2 方法的参数,7.2.4 数组类型参数传递 方法的参数中可以包含数组,但如果包含有数组那么数组必须在参数表中位列最后且只允许一维数组。数组型参数不能再有ref或out修饰符。,7.3 静态方法,使用s

5、tatic类型修饰符的方法称为静态方法,静态方法和非静态方法的区别是:静态方法属于类所有,非静态方法属于用该类定义的对象所有。从内存映象的角度来看,用户在通过类定义自己的对象时,对每一个对象,系统都会在内存中给这个对象开辟一个区域,并将这个类的非静态成员存入。因此,每一个对象都有自己的非静态方法,这些非静态方法是多个副本;对于静态成员,无论定义多少个对象,系统在内存中都只开一个内存空间,所有对这个静态方法的访问都是只对这一个副本访问。 非静态方法可以访问对象中包括表态成员在内的所有成员,而静态方法则只能访问类中的静态成员,7.4 方法的重载,方法的重载既是函数的重载,重载允许一组具有相似功能的

6、函数具有相同的函数名,只不过他们的参数类型或参数个数略有差异。 类的方法的重载也是类似的,类的两个或两个以上的方法,具有相同的方法名,只要他们使用的参数个数或是参数类型不同,编译器变能够根据实参的不同确定在哪种情况下调用哪个方法,这就构成了方法的重载。,7.5 外部方法,C#中使用extern修饰符来声明在外部实现的方法,常用于系统API函数的调用。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static,如下面的示例所示: DllImport(“avifil32.dll“) privat

7、e static extern void AVIFileInit(); 使用extern 修饰符意味着方法在C# 代码的外部实现,而使用 abstract 修饰符意味着在类中未提供方法实现,故不能将extern关键字与abstract关键字同时使用。需要指出的是extern关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。,7.6 操作符的重载,7.6.1 一元操作符的重载 一元操作符运算时只需要一个操作数,由于C#不支持友元机制,故只能将操作符重载为某个类的静态成员方法,请参考+运算符重载的示例,理解一元运算符的重载操作。,7.6 操作符的重载,7.6.2 二元操作符的重载 二元操作符具有两个操作数,重载过程与一元操作符一致,请参考复数加法运算符的重载示例: public static Complex operator +(Complex a, Complex b) return new Complex(a.real+b.real,a.vir+b.vir); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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