我刚看到一个关于System.Collections.ConcurrentBag<T>
类的SO问题,我在ASP.NET MVC中看到了ViewBag
的{{1}}属性。根据我的经验,我已经了解到如果你理解他们在撰写文章时到底得到了什么,那么使用人们的代码会更容易。我认为Controller
或List<T>
或Dictionary<TKey,TValue>
的含义非常直观。另一方面,ReadOnlyCollection<T>
不是那么直观。
所以,我的问题是:这个Bag
隐喻的含义是什么,特别是关于.NET框架?
答案 0 :(得分:6)
ConcurrentBag<T>
是一个线程安全,无序的项目序列,可以包含重复项。
与其他一些系列相比:
HashSet<T>
一样,但不像List<T>
List<T>
但不像HashSet<T>
Dictionary<TKey, TValue>
)可能的用途包括您不关心排序的工作队列(否则您将使用ConcurrentQueue
/ ConcurrentStack
)或您将始终应用排序的项目列表将数据提取到另一个“本地”集合后进行排序。
答案 1 :(得分:0)
从MSDN文档的第一行:
表示线程安全,无序的对象集合。
我认为这不比“List”或“ReadOnlyCollection”更直观,真的是 - YMMV。
答案 2 :(得分:0)
ConcurrentBag与ConcurrentStack和ConcurrentQueue相同,只是由于性能原因不能保持排序,本文将更详细地解释它http://www.emadomara.com/2011/08/what-is-concurrentbag.html