如何从 C# 中的相同方法 return 字符串以及 IEnumerable<T>?

How do I return string as well as IEnumerable<T> from same method in C#?

我有一个通用方法可以执行一些操作并希望 return 结果为字符串或 IEnumerable<T>

  public IEnumerable<T> MyResult(string input)
  {
      // do something return string based on some
      // case or return IEnumerable<T>
  }

如何用一种方法实现这一点,如何维护 return 类型?

首先:一个方法不能有多个return类型。

即使这是糟糕的设计,您也可以 (A) 添加输出参数或 (B) 创建包含可枚举和字符串的 DTO 以及 return 那。

(A):

public IEnumerable<T> MyResult(string input, out string output)
{
    // do something 
}

(乙):

public MyDTO MyResult(string input)
{
    // do something 
}

public class MyDTO 
{
    public IEnumerable<T> resultAsEnumerable {get; set;}

    public string resultAsString {get; set;}    
}

您可以使用 object 作为函数的 return 类型,然后您可以 return stringIEnumerable<T> 取决于输入.像这样:

public object MyResult<T>(string input)
{
    if (true)
        return "string";
    else
        return return new List<T>() { default(T) };
}