这是我选择使用哪种C#集合类型的策略:
如果集合中的项目数量是固定的,那么使用数组,例如:
string [] directions = new string [] {“north”,“south”,“east”,“west”};
否则始终使用List<T>
除非您需要更专业的收藏品,例如Stack<T>, Queue<T>, or Dictionary<TKey, TValue>
但不再使用ArrayList
根据您的经验,此策略缺少什么?
答案 0 :(得分:7)
您的规则正常。
另外:
object
的)基础上更新通用(或专业)集合。HashSet<T>
表示),请使用Dictionary
。SortedList<...>
,SortedDictionary<...>
),如果排序似乎很重要。当然也是最重要的一个:
IList<T>
或IEnumerable<T>
。答案 1 :(得分:5)
我会说在大多数情况下,即使我知道集合中的项目数量,我也会使用List,只是为了它提供的实用程序函数的数量以及与LINQ的兼容性。
Hashmaps是一个重要的用例,因为您希望更快地访问集合中的项目。
答案 2 :(得分:1)
如果您计划在继承的类中覆盖添加/删除/清除方法,也可以使用Collection<T>
,因为有虚拟方法。