程序设计Csharp程序设计 (42).pdf

上传人:刘静 文档编号:52828631 上传时间:2022-10-23 格式:PDF 页数:20 大小:1.24MB
返回 下载 相关 举报
程序设计Csharp程序设计 (42).pdf_第1页
第1页 / 共20页
程序设计Csharp程序设计 (42).pdf_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《程序设计Csharp程序设计 (42).pdf》由会员分享,可在线阅读,更多相关《程序设计Csharp程序设计 (42).pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C#程序设计 Programming in C#方法重载 C#程序设计程序设计 1、方法重载的定义 2、重载方法的调用 4.6.1 方法重载定义 3 C#的一个类中超过一个方法具有相同名称的现象叫做方法重载。4.6.1 方法重载定义 4 在C#中,实现方法重载时必须保证使用相同名称的每个方法有一个和其他方法不同的签名,并且判断方法重载是否合法时编译器只考查这个方面。4.6.1 方法重载定义 5 方法的签名信息包括:方法名称;参数的数目;参数的数据类型和顺序;参数的修饰符;特别注意,方法的返回类型和方法的形参名称不是方法签名的一部分。4.6.1 方法重载定义 6 下面是一些合法的和不合法的方法重

2、载示例。/合法的方法重载合法的方法重载 classclass A A longlong AddValuesAddValues(intint a a,intint b b)returnreturn a a+b b;longlong AddValuesAddValues(intint x x,intint y y,intint z z)returnreturn x x+y y+z z;floatfloat AddValuesAddValues(floatfloat f1f1,floatfloat f2f2)returnreturn f1f1+f2f2;longlong AddValuesAddVa

3、lues(intint x x,intint y y,outout intint z z)z z =x x+y y;returnreturn x x+y y+z z;4.6.1 方法重载定义 7/不合法的方法重载不合法的方法重载 classclass B B longlong AddValuesAddValues(intint a a,intint b b)returnreturn a a+b b;longlong AddValuesAddValues(intint x x,intint y y)returnreturn x x+y y;仅形参名称不同并不会形成不同的方法签名。8 4.6.1

4、方法重载定义【例4.7】方法重载示例。9 4.6.1 方法重载定义 例4.7 1 usingusing SystemSystem;2 classclass TestTest 3 4 static voidstatic void MainMain()()5 6 /调用调用static int max(int a,int b,int c)static int max(int a,int b,int c),输出,输出1010 7 ConsoleConsole.WriteLineWriteLine(maxmax(1010,5 5,3 3););8 /调用调用static int max(int a,i

5、nt b)static int max(int a,int b),输出,输出4 4 9 ConsoleConsole.WriteLineWriteLine(maxmax(3 3,4 4););10 /调用调用static double max(double x,double y)static double max(double x,double y),输出,输出4.34.3 11 ConsoleConsole.WriteLineWriteLine(maxmax(3.03.0,4.34.3););12 13 static intstatic int maxmax(intint a,a,intin

6、t b b)14 ifif(a a b b)returnreturn a a;else returnelse return b b;15 static intstatic int maxmax(intint a,a,intint b,b,intint c c)10 4.6.1 方法重载定义 例4.7 16 17 ifif(a a b b&a a c c)18 returnreturn a a;19 ifif(b b a a&b b c c)20 returnreturn b b;21 returnreturn c c;22 23 static doublestatic double maxma

7、x(doubledouble x,x,doubledouble y y)24 ifif(x x y y)returnreturn x x;else returnelse return y y;25 11 4.6.1 方法重载定义 例4.7 1 usingusing System;System;2 classclass TestTest 3 4 static voidstatic void Main()Main()5 6 /调用调用static int max(int a,int b,int c)static int max(int a,int b,int c),输出,输出1010 7 Cons

8、ole.WriteLine(max(10,Console.WriteLine(max(10,5,5,3);3);8 /调用调用static int max(int a,int b)static int max(int a,int b),输出,输出4 4 9 Console.WriteLine(max(3,Console.WriteLine(max(3,4);4);10 /调用调用static double max(double x,double y)static double max(double x,double y),输出,输出4.34.3 11 Console.WriteLine(max

9、(3.0,Console.WriteLine(max(3.0,4.3);4.3);12 13 static intstatic int max(intmax(int a,a,intint b)b)14 ifif(a(a b)b)returnreturn a;a;else returnelse return b;b;15 static intstatic int max(intmax(int a,a,intint b,b,intint c)c)10 4 4.3 12 4.6.1 方法重载定义 例4.7 1 usingusing SystemSystem;2 classclass TestTest

10、 3 4 static voidstatic void MainMain()()5 6 /调用调用static int max(int a,int b,int c)static int max(int a,int b,int c),输出,输出1010 7 ConsoleConsole.WriteLineWriteLine(maxmax(1010,5 5,3 3););8 /调用调用static int max(int a,int b)static int max(int a,int b),输出,输出4 4 9 ConsoleConsole.WriteLineWriteLine(maxmax(3

11、 3,4 4););10 /调用调用static double max(double x,double y)static double max(double x,double y),输出,输出4.34.3 11 ConsoleConsole.WriteLineWriteLine(maxmax(3.03.0,4.34.3););12 13 static intstatic int maxmax(intint a,a,intint b b)14 ifif(a a b b)returnreturn a a;else returnelse return b b;15 static intstatic

12、int maxmax(intint a,a,intint b,b,intint c c)13 4.6.1 方法重载定义 例4.7 1 usingusing SystemSystem;2 classclass TestTest 3 4 static voidstatic void MainMain()()5 6 /调用调用static int max(int a,int b,int c)static int max(int a,int b,int c),输出,输出1010 7 ConsoleConsole.WriteLineWriteLine(maxmax(1010,5 5,3 3););8 /

13、调用调用static int max(int a,int b)static int max(int a,int b),输出,输出4 4 9 ConsoleConsole.WriteLineWriteLine(maxmax(3 3,4 4););10 /调用调用static double max(double x,double y)static double max(double x,double y),输出,输出4.34.3 11 ConsoleConsole.WriteLineWriteLine(maxmax(3.03.0,4.34.3););12 13 static intstatic i

14、nt maxmax(intint a,a,intint b b)14 ifif(a a b b)returnreturn a a;else returnelse return b b;15 static intstatic int maxmax(intint a,a,intint b,b,intint c c)14 4.6.1 方法重载定义 例4.7 1 usingusing SystemSystem;2 classclass TestTest 3 4 static voidstatic void MainMain()()5 6 /调用调用static int max(int a,int b,

15、int c)static int max(int a,int b,int c),输出,输出1010 7 ConsoleConsole.WriteLineWriteLine(maxmax(1010,5 5,3 3););8 /调用调用static int max(int a,int b)static int max(int a,int b),输出,输出4 4 9 ConsoleConsole.WriteLineWriteLine(maxmax(3 3,4 4););10 /调用调用static double max(double x,double y)static double max(doub

16、le x,double y),输出,输出4.34.3 11 ConsoleConsole.WriteLineWriteLine(maxmax(3.03.0,4.34.3););12 13 static intstatic int maxmax(intint a,a,intint b b)14 ifif(a a b b)returnreturn a a;else returnelse return b b;15 static intstatic int maxmax(intint a,a,intint b,b,intint c c)4.6.2 重载方法的调用 15 对于方法使用者来说,重载方法的

17、调用和普通方法的调用没有什么区别。它使用同一个方法名对应实现相似功能的一组方法,使得程序员调用时非常方便。4.6.2 重载方法的调用 16 调用重载方法时,编译器会根据参数类型、参数数目、参数位置、参数修饰符等来自动解析当前方法调用使用哪个版本的方法,编译器解析的结果可能会有以下三种情况:找到与实参唯一匹配的方法,则调用该方法;找不到与实参匹配的方法,报告编译错误;存在多个与实参匹配的方法,并且没有明显的选择,则编译器报告该方法调用存在二义性。4.6.2 重载方法的调用 17 其解析步骤如下:确定与该调用相对应的重载方法集合,称为候选方法。候选方法与被调用方法名称相同,并且在调用点上其声明可见;4.6.2 重载方法的调用 18 从候选方法中选择一个或多个方法,它们能够使用方法调用中指定的实参来调用,称为可行方法。可行方法的形参个数要与调用的实参数目相同,同时调用的实参类型必须与可行方法的形参类型对应匹配,或可隐式类型转换为相应的类型;4.6.2 重载方法的调用 19 在可行方法中寻找最优方法,其寻找依据为:实参类型与形参类型完全对应,则该方法即为最优方法;每个实参类型与形参类型都接近,则调用该方法;至少有一个实参类型与形参类型接近程度由于其他方法,则调用该方法;逐个分析实参后仍找不到唯一的候选方法,则编译器将提示调用具有二义性。结束

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁