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

Edw*_*uay 7 c# collections conceptual data-structures

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

  • 如果集合中的项目数量是固定的,那么使用数组,例如:

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

  • 否则总是使用 List<T>

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

  • 但是再也不要使用ArrayList了

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

Dar*_*rio 7

你的规则运作正常.

此外:

  • 始终在非通用(object基于)的集合上更新通用(或专用)集合.
  • 使用HashSet<T>,如果你要检查存在本身,而不是键-值映射(这是通过代表Dictionary).
  • 在字典的情况下SortedList<...>,SortedDictionary<...>如果排序看起来很重要,请考虑使用有序映射(,).
  • 如果您在中间删除/插入操作,请使用链接列表.

当然最重要的一个:

  • 永远不要导出具体的集合类型:始终使用最通用的界面,在大多数情况下 - IList<T>IEnumerable<T>.


Fio*_*ite 5

我要说在大多数情况下,即使我知道集合中的项目数量,我也会使用List,只是为了它提供的实用程序函数的数量以及与LINQ的兼容性.

哈希映射是一个重要的用例,因为您希望更快地访问集合中的项目.