我现在在C#中学习LINQ
。我看到的所有来源都在左侧使用IEnumerable<T>
。为什么他们使用这个而不是其他类型?
答案 0 :(得分:2)
根据定义,IEnumerable
是“公开一个枚举器,它支持对非泛型集合的简单迭代” - 因为从查询中获得的所有内容通常都是某些类型的对象,这些对象具有行(数组在通用意义),使用IEnumerable<T>
帮助迭代返回的数据更有意义。
http://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx
答案 1 :(得分:2)
IEnumerable 是一个接口,它告诉我们可以枚举一系列T实例。如果需要对集合中的每个对象执行某些操作,这是首选。
根据MSDN IEnumerable
公开一个枚举器,它支持一个简单的迭代 非通用集合
我还建议你通过这个CodeProject link
答案 2 :(得分:1)
由于所有集合都在实施IEnumerable<T>
,因此 LINQ
方法可用于所有集合。LINQ
旨在对集合进行操作,因此他们可能会选择使用IEnumerable<T>
接口,因为它是所有集合类型的通用接口。
答案 3 :(得分:1)
有两个原因。
IEnumerable
是一个不能创建实例的接口。所以,它位于左侧。此外,当您只想使用迭代器读取枚举而不对其进行任何修改时,可以使用此方法。
答案 4 :(得分:0)
如果linq
,您对对象执行的查询不会立即执行。执行推迟到迭代以提高性能。这意味着什么时候,
var filtered = something.where(st=>st.data == mydata);
编译器不执行查询并检索对象。因此,您在filtered
对象上所能做的就是迭代。其他操作(如添加,删除等)在这一点上没有意义。 IEnumerable
提供了完美的界面来实现此目的。