在C#中可以使用哪种替代方法来避免返回`object`类型的方法?

时间:2011-07-01 10:46:49

标签: c# .net generics

我知道该方法目前正在返回List<string>。但在某些情况下(在我们的应用程序中频繁出现)场景中,它会返回具有仅一个字符串的List。

所以最终会返回stringList<string>

由于它在运行时返回的内容不可预测,目前它的返回类型保持为object

可以使用哪种替代方法来避免方法返回object

编辑: 我想回答一个问题可以使用哪种替代方法来避免方法返回object;不考虑我描述的情景。列表就够了。

5 个答案:

答案 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();

或者您可以将其添加到包含单个元素的列表中并返回列表,就像这里提出的其他一些答案一样