【问题标题】:Method overloading return types [duplicate]方法重载返回类型
【发布时间】:2019-08-01 20:10:47
【问题描述】:

我想重载 C# 中函数的返回类型。在此函数中,将根据调用的方法以特定方式操作字符串,我假设这将由仅返回类型不同的方法的签名确定。

我是 C# 的新手,在 Delphi 中我本来可以做到这一点(如果我没记错的话),因此愿意就这里的最佳实践提出建议。

    public Class1 GetAppSettings()
    {
        Class1 result = new Class1();

        //  Code does something

        return result;
    }

    public Class2 GetAppSettings()
    {
        Class2 result = new Class2();

        //  Code does something

        return result;
    }

我假设调用过程将定义所需的返回类型。

【问题讨论】:

  • 见泛型。你可以做GetAppSettings<Class1>()GetAppSettings<Class2>()

标签: c#


【解决方案1】:

很遗憾,不支持对返回类型进行重载。显然,返回类型没有(实际上也不能)考虑重载。编译器只能根据你想要的参数来判断。

但是还有很多其他方法:

输出参数。通常,如果您需要从函数中传递附加值(例如TryParse),这些仅用于输出。但我确实认为这应该是可编译的并允许重载:

public void GetAppSettings(out Class1 output)
{
    Class1 result = new Class1();

    output = result;
}

另一种方法应该是扩展方法,但这些方法可能过于有限。毕竟你现在正在编写这些类,所以它们是不必要的。我只是为了完整性而提及它们。

当然,您可能从不想要不同的实现开始(这是重载的核心焦点),在这种情况下,泛型是去吧。

【讨论】:

  • 感谢您的意见。泛型是解决方案。学到了一些新东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
相关资源
最近更新 更多