考虑这个方法——返回的变量myVar
是 a List<T>
,但方法的返回类型MyMethod()
是 an IEnumerable<T>
:
public IEnumerable<T> MyMethod(string stuff)
{
var myVar = new List<T>();
//do stuff
return myVar;
}
本质上,我想知道的是,myVar
作为不同类型返回是否可以。
具体来说,就我的情况而言,“做事”通过 aDataRow
并将其中的项目分配给DataRow
对象列表。我在其他地方也有类似的情况ICollection
和IList
返回类型。
我想返回IEnumerable
或返回的原因ICollection
是我返回的数量不会超过需要。但同时,这允许调用者在需要时将返回的值转换为 a List
。
但是,我的 return 语句返回 aList
而不是方法的返回类型似乎很奇怪。这是正常的做法吗?这样做有什么问题吗?
澄清(回应欺骗评论):
澄清一下,我很好奇的是,如果我在 body 中的 return 语句返回 a 是否可以List<T>
,但方法头的返回类型为IEnumerable
,或者可能ICollection
,Collection
等等...与 body不同的东西返回声明。