.net源码分析 – List<T>
通过分析源码可以更好理解List<T>的工作方式,帮助我们写出更稳定的代码。 List<T>源码地址: https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/List.cs 。 接口 List<T>实现的接口:IList<T>, IList, IReadOnlyList<T> 其实.net framework经过多代发展, List 的接口确实是有点多了,添加新功能时为了兼容老功能,一些旧的接口又不能丢掉,所以看上去有点复杂。先 把这些接口捋一下: IEnumerator是枚举器接口,拥有枚举元素的功能,成员有Current, MoveNext, Reset,这三个函数可以使集合支持遍历。 IEnumerable是支持枚举接口,实现这接口表示支持遍历,成员就是上面的IEnumerator。 ICollection是集合接口,支持着集合的Count属性和CopyTo操作,另外还有同步的属性 IsSynchronized(判断是否线程安全)和SyncRoot(lock的对象) 。 IList是集合的操作接口,支持索引器,Add, Remove, Insert, Contains等操作。 泛型部分基本是上面这些接口的泛型实现,不过IList<T