不推荐List<T>作API
缘由有以下两点:
1.首先List<T> 设计之初就没有设计成可扩展的,咱们不能从新其任何方法。这就意味着,咱们操做List<T>的时候却不
能有任何的通知机制,而Collection<T>却提供了SetItem虚方法以供重写,以便于咱们在修改为员信息或者添加成员的
时候能够自定义实现通知机制。
2.其次List<T>有许多的成员在不少的使用场景下是相关联的,这就是咱们所说的List<T>对外公开了过多的成员方法,
想象下,ListView中的Items属性返回(包含了众多属性的)List<T>。来看看实际上ListView.Items的返回类型;它的方
式更简单,相似于Collection<T>或ReadOnlyCollection<T>。性能
因为List<T>与Collection<T>的内容比较多,你们感兴趣能够本身查看下,这里只把Collection<T>的部分片断
列出来了。优化
public class Collection<T> : IList<T>, IList, IReadOnlyList<T>
{
protected virtual void ClearItems()设计
protected virtual void InsertItem(int index, T item)blog
protected virtual void RemoveItem(int index)开发
protected virtual void SetItem(int index, T item)
}
并且其公开方法大概也只有10来个,而List<T>的公开发方法粗略的估计一下至少也得有30个以上。因此明显的能够看出
来,对于系统内部使用为了方便,List<T>提供了更便利的操做,并且在性能上,存储上作了大量的优化。可是若是做为
API显然有些过于庞大和不可控了。get
(原文:http://blogs.msdn.com/b/kcwalina/archive/2005/09/26/474010.aspx)it