C# 方法重载

猿哥,媛姐帮我看看下面的方法1,3可以构成重载吗?在VS2013里,如果构不能重载是不是也不会报错? public static int Reload(int a, int b) //function 1 { return a + b; } public static int Reload(int a, int b, int c) //function 2 { return a + b + c; } public static void Reload(int a, int b) //function 3 { Console.WriteLine(a + b); }在哪里可以设置不构成重载的让方法下面标出红线来?

方法1、3不属于重载,是无法编译通过的,首先你要理解什么是一个方法的签名,签名是指方法的名称和它参数的数量、类型、以及顺序。注意这里面不包括返回值的类型,也就是说,返回值的类型不是方法签名的一部分。
再来看重载,重载是指方法名称相同,但签名不同的一组方法,通俗来说,就是参数不能完全一样(数量、类型、顺序),与返回值无关。
你的方法1和方法3仅仅是返回值不同,而方法名相同,参数的数量、类型、以及顺序也完全相同,因此是具有同样签名的两个方法,编译器无法区分这两个方法,所以在编译时会报错追问

确实报错了。

错误 2 类型“D072.Program”已定义了一个名为“Reload”的具有相同参数类型的成员 D:\DEV\Solution01\D072\Program.cs 25 28 D072
谢了朋友,但先答的优先,只能采纳一个答案。

追答

不客气,能帮到你才是目的

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-04-23
1和3不是合法重载
参数签名都一样的,当你调用Relaod(1,3)的时候,谁也不知道你要调用哪一个,所以肯定不行
非法重载vs会自动标红线 vs2015有,2013没有本回答被提问者采纳
相似回答