C#返回类型不同是否为方法重载?

C#返回类型不同是否为方法重载?

public string b(int a, string name) { return a; }
public void b(string name, int a) { }

重载的概念是:

方法名称相同,参数个数、次序、类型不同

因此重载对返回值没有要求,可以相同,也可以不同

但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载

如:

public int A(int i);

public double A(int i);

这2个方法不能构成重载,会有编译错误。

而:

public int A(int i):

public double A(double i);

这2个方法可以形成重载

因此你的是追问

就是说参数 参数顺序 参数个数 相同不为重载,返回类型相同或者不相同,但参数不同,或顺序不同,就为重载!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-10
参数不同为重载,返回值不算。

你可以尝试一下

public string a(string s)
public void a(string a)
这样编译不过去。

因为这样无法识别!
第2个回答  2015-08-17

    返回类型不同 不是 方法重载。

    方法重载必须满足以下两点之一:

    (1)参数个数不同。

    (2)参数类型不同。

第3个回答  2012-05-10
返回类型不同,不能称之为“重载”,但是如你问题举的例子,参数个数相同,但是顺序不同,这样是可以是构成重载的追问

如果一个没有参数,一个有参数呢? 是否构成重载?
public string b(int a, string name) { return a; }
public void b() { }

会否会报错,不采用0个参数什么的?

追答

是重载,不会报错

第4个回答  2012-07-27
像楼主说的这样,其实没必要弄成void和其他类型一样的方法,因为,就算有返回参数,在调用的时候可以不接受,或者不使用。如果是这个的话,可以这样

public object b(int a, string name,string type) {
if ("List".Equals(type))
reutrn new List<object>();
else
renturn new DataTable();
}
相似回答