【摘要】:方法重载是指在同一个类中允许存在多个名称相同但签名不同的方法。签名是方法重载的基础,重载不能违背类内签名方法唯一性的特点。在C#中,要根据调用时的实参和方法声明中的形参的匹配程度来选择重载决策,具体说明如下。1)调用时的实参数目和声明时的形参数目相同。而且还应该具备如下两个特点:1)对于值参数或参数数组,存在从实参类型向形参类型的隐式转换。在使用方法重载时,必须遵循上面的两个最佳原则。
方法重载是指在同一个类中允许存在多个名称相同但签名不同的方法。签名是方法重载的基础,重载不能违背类内签名方法唯一性的特点。
因为重载使同一个类内有多个相同的方法,所以在编译一个重载方法的调用代码时,编译器使用重载决策来确定要调用的特定方法。通过重载决策查找与其参数最为匹配的方法,如果没有找到则返回错误信息。
在C#中,要根据调用时的实参和方法声明中的形参的匹配程度来选择重载决策,具体说明如下。
1)调用时的实参数目和声明时的形参数目相同。
2)调用时的各实参参数、参数的传递模式,与相应的声明形参的相同。而且还应该具备如下两个特点:
1)对于值参数或参数数组,存在从实参类型向形参类型的隐式转换。
2)对于引用参数或输出参数,实参的类型和形参的类型相同。
在使用方法重载时,必须遵循上面的两个最佳原则。如果不存在最佳匹配方法,则在调用方法时会出现编译错误。
注意
在使用重载方法时,需要读者注意如下三点。
1)方法的签名不包含返回类型。(www.xing528.com)
2)方法的签名不包含修饰符params,但是可以用于指定最右边的参数。
3)方法的签名可以包含修饰符ref和out,但是不能区分出ref和out。
下面通过一段代码看如何对WriteLine()方法进行重载,具体代码如下:
在上面的代码中,定义了多个名称相同但签名不同的方法ChongzaiHanshu()。当程序运行后,将调用对应的重载方法,并输出显示对应的结果,具体如图7-10所示。
图7-10 实例执行结果
由图7-10所示结果可以看出,编译器能够根据不同参数的匹配程度正确地选择出最合适的调用方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。