我尝试创建一个返回void的函数的重载函数:
public string Message { get; private set; }
public void Foo (Bar bar)
{
Message = "Hello World!";
}
public string Foo (Bar bar)
{
return "Hello World!";
}
但是我得到Compile Time
错误说:
Type 'Foo' already defines a member called with the same parameter types.
有什么方法可以实现那种过载吗?
答案 0 :(得分:6)
不,没有办法超载。
编译器在此行上调用什么方法:
Foo (new Bar());
这对于两者都是完全有效的语法,无法区分,也不会发生。
方法重载必须具有不同的参数。只是不同的回报类型是不够的。
答案 1 :(得分:1)
不,你不能那样做。返回类型更改不是方法签名更改。以下是关于重载指南的link讨论