GetConsumingEnumerable实际上是否从BlockingCollection中删除了一个项目?

时间:2013-06-24 15:57:38

标签: c# collections blockingcollection

MSDN在http://msdn.microsoft.com/en-us/library/dd267312.aspx的评论说......

“BlockingCollection的默认集合类型是ConcurrentQueue”

这是否意味着当我在集合上运行“GetConsumingEnumerable()”时,拉出的项目是从队列中出队的,并且在使用之后将被标记为GC?

换句话说......在下面的代码片段中,

foreach (var item in collection.GetConsumingEnumerable())
        {
            //do something with item
        }

循环迭代后项目会发生什么?

1 个答案:

答案 0 :(得分:5)

这些项目将从集合中删除,如果没有其他参考资料,则他们将有资格领取。

来自GetConsumingEnumerable的文档:

  

返回值
  输入:System.Collections.Generic.IEnumerable<T>
   IEnumerable<T>,用于删除和返回集合中的项目。

(我的重点)