如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]
Posted
技术标签:
【中文标题】如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]【英文标题】:How do I return string as well as IEnumerable<T> from same method in C#? [duplicate] 【发布时间】:2015-09-29 02:10:24 【问题描述】:我有一种通用方法可以执行一些操作并且想要
返回结果为字符串或IEnumerable<T>
public IEnumerable<T> MyResult(string input)
// do something return string based on some
// case or return IEnumerable<T>
如何在一种方法中实现这一点,以及如何维护返回类型?
【问题讨论】:
您可能已经发现,一个方法可以有一个返回类型。添加一个 out 参数或创建一个包含可枚举和字符串的 DTO 并返回它。 您必须添加一些上下文。你不能按照你的建议去做,但我看不出你的建议特别有用。你想解决什么问题? 【参考方案1】:首先:一个方法不能有多种返回类型。
即使这是一个糟糕的设计,您也可以 (A) 添加一个输出参数或 (B) 创建一个包含可枚举和字符串的 DTO 并返回它。
(A):
public IEnumerable<T> MyResult(string input, out string output)
// do something
(B):
public MyDTO MyResult(string input)
// do something
和
public class MyDTO
public IEnumerable<T> resultAsEnumerable get; set;
public string resultAsString get; set;
【讨论】:
@cubrr DTO 是一个 data ttransfer object。 [链接]martinfowler.com/eaaCatalog/dataTransferObject.html【参考方案2】:您可以使用object
作为函数的返回类型,然后您可以根据输入返回string
或IEnumerable<T>
。像这样的:
public object MyResult<T>(string input)
if (true)
return "string";
else
return return new List<T>() default(T) ;
【讨论】:
这是一个糟糕的设计..请不要这样做。 also:这将始终返回“字符串”,因为 true 始终为 true。不要这样做! @ChrisM 当然他会在那里插入自己的条件......以上是关于如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DLLImport 将字符串从 C# 传递到 C++(以及从 C++ 到 C#)?