我知道该方法目前正在返回List<string>
。但在某些情况下(在我们的应用程序中频繁出现)场景中,它会返回具有仅一个字符串的List。
所以最终会返回string
或List<string>
。
由于它在运行时返回的内容不可预测,目前它的返回类型保持为object
。
可以使用哪种替代方法来避免方法返回object
?
编辑:
我想回答一个问题可以使用哪种替代方法来避免方法返回object
?;不考虑我描述的情景。列表就够了。
答案 0 :(得分:5)
为什么要返回string
?一个List<string>
只有一个string
完全定义良好...使用它!这里有一个模棱两可的API很傻。
另一个选项可能是IEnumerable<string>
,但是...... meh,只需返回一个string
列表!
答案 1 :(得分:3)
返回包含一个或多个字符串元素的List,并将列表作为列表处理,而不管它包含的元素数量。
答案 2 :(得分:2)
使List具有一个或多个甚至没有字符串(空列表)是没有问题的。 当List中只有一个元素时,为什么要包含字符串? 只需保持API更清晰。
答案 3 :(得分:1)
我没有看到返回List<string>
的问题,即使List
只包含一个元素。但是如果你真的希望你的方法在一个字符串值上表现不同,你可以做
public List<string> GetStrList(out string val)
{
//set str = string.Empty; when value is more than one
//set str = whateverstring when value is only one
}
答案 4 :(得分:0)
嗯,这种方法可能在其体内调用了两种不同的方法,一种返回string
,另一种返回List<string>
?如果是这样,也许您可以更改方法以返回IEnumerable<string>
,并将return GetSingleString();
语句更改为yield return
GetSingleString();
或者您可以将其添加到包含单个元素的列表中并返回列表,就像这里提出的其他一些答案一样