RJP*_*RJP 5 c# collections return return-type
可能重复:
集合<T>与列表<T>您应该在接口上使用什么?
考虑这个方法 - 返回的变量myVar是a List<T>,但方法的返回类型MyMethod()是IEnumerable<T>:
public IEnumerable<T> MyMethod(string stuff)
{
var myVar = new List<T>();
//do stuff
return myVar;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想知道的是,如果返回myVar另一种类型是好的.
具体来说,就我的情况而言,'do stuff'通过a DataRow并将其中的项目分配给DataRow对象列表.我在其他地方也有类似的情况ICollection和IList返回类型.
我想要返回的原因IEnumerable或是ICollection因为我没有返回超过需要.但与此同时,这允许调用者将返回值转换为a,List如果需要这样做的话.
但是,我的return语句返回a List而不是方法的返回类型似乎很奇怪.这是正常做法吗?这样做有什么不对吗?
澄清(回应重复评论):
只是为了澄清,我很好奇的是,如果它是好的,在我的身体return语句返回一个List<T>,但这种方法管器具有返回类型的IEnumerable,或可能ICollection,Collection等...的东西不同比高于机构退货声明.
它不仅没有任何问题,而且它实际上是一种很好的做法:只暴露出绝对必要的东西.这样,调用者不能依赖于该方法将返回a的事实List<T>,因此如果由于某种原因您需要更改实现以返回其他内容,则不会违反合同.但是,如果调用代码(错误地)对方法实际返回的内容做出假设,则调用代码可能会中断.
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |