我不明白为什么我要创建一个IEnumerable.或者为什么它很重要.
我正在查看IEnumerable的示例:http: //msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx
但是如果我去的话,我基本上可以做同样的事情:
List<Person> people = new List<Person>();
Run Code Online (Sandbox Code Playgroud)
那么IEnumerable有什么用呢?你能给我一个我需要创建一个实现IEnumerable的类的情况吗?
Fem*_*ref 14
IEnumerable是一个接口,它将某些东西暴露给外部.虽然你完全正确,但你可以使用a List<T>,但List<T>在继承树中非常深.究竟是什么List<T>?它存储物品,它提供某些方法Add和Remove.现在,如果你只需要一个"项目保持"功能List<T>怎么办?这是一个什么IEnumerable<T>- 一种抽象的方式说"我想得到一个我可以迭代的项目列表".列表是"我想获得一个我可以修改的集合,可以通过索引和迭代访问".List<T>提供了比IEnumerable<T>它更多的功能,但它占用了更多的内存.因此,如果一个方法正在采用IEnumerable<T>,它并不关心它到底是什么,只要该对象提供了可能性IEnumerable<T>.
此外,您不必创建自己的IEnumerable<T>,一个List<T> IS的IEnumerable<T>!
列表当然是IEnumerable- 作为一般规则,您希望特定于您输出的内容,但广泛接受您作为输入的内容,例如:
你有一个子循环通过一个对象列表并写入控制台...
您可以将参数声明为IEnumerable<T>或者IList<T>(或者甚至List<T>).由于您不需要添加到输入列表,所以您实际需要做的就是枚举 - 所以使用IEnumerable- 那么您的方法也将接受实现IEnumerable的其他类型,包括IQueryable链接列表等...
您无需任何费用即可使您的方法更通用.
据我了解,IEnumerable 是作为一个接口提供给您的,用于创建您自己的可枚举类类型。
我相信一个简单的例子就是重新创建类型List,如果您想拥有自己的一组功能(或缺乏功能)。
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |