如何从 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 string
或 IEnumerable<T>
取决于输入.像这样:
public object MyResult<T>(string input)
{
if (true)
return "string";
else
return return new List<T>() { default(T) };
}
我有一个通用方法可以执行一些操作并希望
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 string
或 IEnumerable<T>
取决于输入.像这样:
public object MyResult<T>(string input)
{
if (true)
return "string";
else
return return new List<T>() { default(T) };
}