C#中的LINQ。为什么要使用IEnumerable<;T>;?
我现在正在用C#学习LINQ。我看到的所有源代码都使用左手边的C#中的LINQ。为什么要使用IEnumerable<;T>;?,c#,linq,C#,Linq,我现在正在用C#学习LINQ。我看到的所有源代码都使用左手边的IEnumerable。为什么他们使用这个而不使用其他类型?因为所有集合都实现了IEnumerable,所以LINQ方法可以用于所有集合。LINQ设计用于对集合进行操作,所以他们可能选择使用IEnumerable接口,因为它是所有集合的通用接口集合类型。因为所有集合都实现了IEnumerable,所以LINQ方法可以用于所有集合。LINQ设计用于对集合进行操作,所以他们可能会选择使用IEnumerable接口,因为它是所有集合类型的通
IEnumerable
。为什么他们使用这个而不使用其他类型?因为所有集合都实现了IEnumerable
,所以LINQ
方法可以用于所有集合。LINQ
设计用于对集合进行操作,所以他们可能选择使用IEnumerable
接口,因为它是所有集合的通用接口集合类型。因为所有集合都实现了IEnumerable
,所以LINQ
方法可以用于所有集合。LINQ
设计用于对集合进行操作,所以他们可能会选择使用IEnumerable
接口,因为它是所有集合类型的通用接口。定义IEnumerable
是“公开一个枚举器,它支持对非泛型集合的简单迭代”-因为从查询中得到的通常是具有行(泛型数组)的特定类型的对象,所以使用IEnumerable
来帮助迭代返回的数据更有意义
根据定义,
IEnumerable
是“公开一个枚举器,它支持对非泛型集合进行简单的迭代”——因为从查询中得到的通常是具有行(泛型意义上的数组)的特定类型的对象,使用IEnumerable
帮助迭代返回的数据更有意义
有两个原因
IEnumerable
是一个不能为其创建实例的接口。所以,它在左边IEnumerable
是一个不能为其创建实例的接口。所以,它在左边此外,当您只想使用迭代器读取枚举,而不想对其进行任何修改时,也可以使用此选项。IEnumerable是一个接口,它告诉我们可以枚举一系列T实例。如果需要对集合中的每个对象执行某些操作,这是一个更好的选择 根据MSDN 公开枚举数,该枚举数支持对 非泛型集合
我还建议您了解一下,IEnumerable是一个接口,它告诉我们可以枚举一系列T实例。如果需要对集合中的每个对象执行某些操作,这是一个更好的选择 根据MSDN 公开枚举数,该枚举数支持对 非泛型集合
如果
linq
对对象执行的查询不会立即执行,我还建议您检查一下这个。执行被推迟到迭代以提高性能。也就是说当你这么做的时候
var filtered = something.where(st=>st.data == mydata);
编译器不会执行查询并检索对象。所以,对
过滤的对象所能做的就是迭代。此时,其他操作(如添加、删除等)没有意义。而IEnumerable
提供了完美的接口来实现这一目的 在linq
的情况下,不会立即执行对对象执行的查询。执行被推迟到迭代以提高性能。也就是说当你这么做的时候
var filtered = something.where(st=>st.data == mydata);
编译器不会执行查询并检索对象。所以,对过滤的对象所能做的就是迭代。此时,其他操作(如添加、删除等)没有意义。而IEnumerable
提供了完美的接口来实现这一目的