日期:2014-05-19  浏览次数:20749 次

关于重构问题
public   string   test(string   str)
{}

public   int   test(string   str)
{}

编译到第二函数的时候,报错,如何解决这个问题????

------解决方案--------------------
这不叫重构,叫重载。
重载时参数类型必须不同,否则程序没办法知道你调用那个函数
------解决方案--------------------
这叫重载,重载是指同名但不同 "签名 "之间的关系,方法的签名包括 "参数的数目,参数的类型,参数的顺序和方法的名称 ",只用签名不同时,才能返回不同的类型,否则编译无法通过
------解决方案--------------------
这是重载
不能根据返回值的类型进行重载
------解决方案--------------------
重载
每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。参数列表可以通过 varargs 约束来限定,此约束指出方法支持一个变量参数列表。例如,在 System.Char 中,IsDigit 被重载。一种方法使用了一个 Char 并返回一个 Boolean。另一种方法使用了一个 String 和一个 Int32,并返回一个 Boolean。

但是:如果只有返回值不一样的话,就不能重载!