当从一个函数返回多个相同类型的对象时,首选的容器类型是什么?
返回一个简单的数组(如MyType[])是违反良好实践的,还是应该将其包装在某个通用容器(如ICollection)中?
谢谢!
发布于 2009-03-02 16:02:48
Eric Lippert在这方面有一个很好的article。如果你不想读整篇文章,答案是:返回接口。
发布于 2009-06-24 01:20:52
使用yield return
返回IEnumerable<T>
。
发布于 2009-03-02 16:06:50
如果返回的集合是只读的,这意味着您永远不希望更改集合中的元素,则使用IEnumerable<T>
。这是不可变(至少从枚举本身的角度来看)元素的只读序列的最基本表示。
如果您希望它是一个可以更改的自包含集合,那么可以使用ICollection<T>
或IList<T>
。
例如,如果您希望返回搜索特定文件集的结果,则返回IEnumerable<FileInfo>
。
但是,如果您希望公开目录中的文件,则需要公开IList/ICollection<FileInfo>
,因为您可能希望更改集合的内容。
https://stackoverflow.com/questions/602860
复制相似问题