public class test
{
public void xov() { return; }
public string xov() { return null; }
public int xov() { return 0; }
}
public class p
{
public p()
{
test v = new test();
v.xov();// Here i cann't use defined overloads :(
}
} 我可以通过参数重载方法,但是为什么不能按返回类型重载方法呢?
发布于 2013-11-17 12:10:10
返回类型不被视为方法签名的一部分。也就是说,如果方法仅通过返回类型不同,则不能重载它们。
发布于 2013-11-17 12:13:56
呼叫
int x = Add(5,6);可能会有所不同,而不是:
string y = Add(5,6);但是,如果没有人读取返回类型呢?
Add(5,6);编译器应该如何知道调用了哪个add?所以这个选择是不合法的。
发布于 2013-11-17 12:15:33
为了方法重载的目的,方法的返回类型不是方法签名的一部分。但是,在确定委托与它所指向的方法之间的兼容性时,它是方法签名的一部分。
链接到MSDN文档
https://stackoverflow.com/questions/20030484
复制相似问题