c# - 这种选择使用哪个 C# 集合的策略缺少什么?

标签 c# data-structures collections conceptual

这是我选择使用哪种 C# 集合类型的策略:

  • 如果集合中的项数是固定的,则使用数组,例如:

    string[] directions = new string[] { "north", "south", "east", "west"};

  • 否则总是使用List<T>

  • 当然,除非您需要更专业的收藏,例如Stack<T>, Queue<T>, or Dictionary<TKey, TValue>

  • 但再也不用ArrayList了

根据您的经验,此策略缺少什么?

最佳答案

您的规则工作正常。

另外:

  • 始终优先选择通用(或专用)集合而不是非通用(基于 object 的)集合。
  • 使用HashSet<T>如果您只想检查是否存在而不是键值映射(通过 Dictionary 表示)。
  • 对于字典,如果顺序看起来很重要,请考虑使用有序映射(SortedList<...>SortedDictionary<...>)。
  • 如果中间有删除/插入操作,请使用链表。

当然还有最重要的一个:

  • 从不导出具体的集合类型:始终使用最通用的接口(interface),即 - 在大多数情况下 - IList<T>IEnumerable<T> .

关于c# - 这种选择使用哪个 C# 集合的策略缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435904/

相关文章:

c# - C++ 到 C# 事件处理

java - 这种情况下最好的数据结构和算法是什么?

java - 用 Arrays.asList() 装箱

c# - 如何中止长时间运行的方法?

c# - 将 Listview 项目计数绑定(bind)到 Xamarin Forms 中的标签可见性

c# - 将复杂对象模型绑定(bind)到 View

sorting - 堆排序:为什么不使用 "Soft Heap"来提高性能?

javascript - 数据结构关联列表-如何创建头键值对?

java - 如何为带有子选择的查询编写 HIbernate 条件

java - .asSet(...) 是否存在于任何 API 中?