【发布时间】:2009-10-20 18:45:32
【问题描述】:
哪种类型的产品最适合我们退货?
我应该使用IList<T>、IEnumerable<T>、IQueryable<T> 还是别的什么?哪个最好?为什么?
我正在尝试决定我应该在接口和我正在编写的几个类的实现中通常使用哪个。
edit 让我进一步确定这一点,我正在使用 LINQ to SQL 通过 WCF 服务返回数据。感觉这可能会改变使用的最佳类型?
【问题讨论】:
-
这里有一个很好的讨论:stackoverflow.com/questions/1456132/…。
-
根据上面的评论,当使用'IEnumerable
'时,我班级的消费者如何使用它?只是显式转换回'List '? -
不,这样的演员表会违反界面,并且很可能在某些时候失败。消费者应该使用返回的确切接口,或者它的父级。因此,例如,如果它返回 IList
并且您所需要的只是 IEnumerable 的功能,那么这就是您应该使用的。 -
那么消费者将如何使用它?如果方法返回 IEnumerable
消费者如何调用该方法并存储结果?哪些具体的泛型类型使用 IEnumerable? -
@Nate - 您可以将其存储为 IEnumerable
。拥有 IEnumerable 类型的字段或属性非常好。感谢 LINQ,您可以使用 IEnumerable 做很多事情。您可以按索引、排序、查找(通过 Where)等进行访问。List 、HashSet 和 LinkedList 是 IEnumerable 的一些具体实现。