C# 使用 Return void 和 object (string) 重载

C# Overloading with Return void and object (string)

我尝试创建一个 return 无效的重载函数或像这样的字符串:

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.

有什么方法可以实现这种超载吗?

不,没有办法有这样的超载。

编译器会在这一行调用什么方法:

Foo (new Bar());

对于无法区分的两者来说,这将是完全有效的语法,而且这种情况绝不能发生。

方法重载必须有不同的参数。只是不同的 return 类型是不够的。

不,你不能那样做。 Return 类型更改不是方法签名更改。这是 link 关于重载指南的讨论