【发布时间】:2012-07-25 17:42:27
【问题描述】:
根据Albahari brothers[Page No.273],使用IEnumerable是因为:
通过定义一个返回枚举器的方法,IEnumerable 提供了灵活性,因为
->迭代逻辑可以framed off to another class(明白)
->Moreover it means that several consumers can enumerate the collection at once without interfering with each other(不明白)
我无法理解第二点!
如何使用IEnumerable 而不是使用IEnumerator 启用多个消费者一次枚举集合?
【问题讨论】:
-
你能引用你的参考吗?脱离上下文很难理解这一点。
-
IEnumerator<T>是有状态的,通常表示正在迭代的集合中的位置。共享一个枚举器的多个线程需要使用某种同步方法才能安全地使用一个。IEnumerable<T>接口允许每个线程获取自己的枚举器,它可以安全地使用它而无需与其他线程合作(除非底层集合发生更改,这不安全并且会导致抛出异常)。跨度>
标签: c# .net collections concurrency ienumerable