.net - 为什么我要把我的元素放在袋子里?

标签 .net collections .net-4.0 bag viewbag

我刚刚看到一个关于 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/

相关文章:

c# - 将集合传递给方法的格式

asp.net-mvc - 在 .NET Framework 4.0 中使用 TLS 1.2 的问题

c# - 如何使用 Mono 和 mkbundle 将一个简单的 .Net 控制台项目转换为可移植的 exe?

c# - 当 Window AllowsTransparency = true 时 WPF 硬件加速了吗?

.net - 无法在 Excel 程序中设置 PageSetup 类的方向属性

c# - 如何在 ItemsControl 中仅显示集合中的几个项目 - Silverlight

sqlite - 什么是混合模式装配?

c# - WPF 的有效拖放启用 ListView 实现?

algorithm - 我可以使用什么结构将唯一键映射到唯一值?

java - 如何从java hashSet中检索对象