我刚刚看到一个关于 System.Collections.ConcurrentBag<T>
的问题类,我看到了 ViewBag
Controller
的属性(property)在 ASP.NET MVC 中。根据我的经验,我了解到,如果您了解人们编写代码的确切目的,那么使用他们的代码会更容易。我认为关于 List<T>
是什么非常直观。或Dictionary<TKey,TValue>
或ReadOnlyCollection<T>
是为了代表。一个Bag
另一方面就不那么直观了。
所以,我的问题是:这是什么 Bag
隐喻意味着代表,特别是关于 .NET 框架?
最佳答案
ConcurrentBag<T>
是一个线程安全的、无序的项目序列,可以包含重复项。
与其他一些集合相比:
- 它是无序的,就像
HashSet<T>
但与List<T>
不同 - 它可以包含重复项,例如
List<T>
但与HashSet<T>
不同 - 这只是值而不是 map (与
Dictionary<TKey, TValue>
不同) - 与所有非并发集合不同,它是线程安全的 - 因此您可以在多个线程(所有读取和写入)之间共享一个实例。
可能的用途包括您不关心顺序的工作队列(否则您将使用 ConcurrentQueue
/ConcurrentStack
)或项目列表,您在获取项目后始终应用排序顺序数据到另一个“本地”集合。
关于.net - 为什么我要把我的元素放在袋子里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377500/