C#中IEnumerable、ICollection、IList、List之间的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#中IEnumerable、ICollection、IList、List之间的区别⾸先我看看 IEnumerable:
// 摘要:
// 公开枚举器,该枚举器⽀持在指定类型的集合上进⾏简单迭代。

//
// 类型参数:
// T:
// 要枚举的对象的类型。

[TypeDependency("System.SZArrayHelper")]
public interface IEnumerable<out T> : IEnumerable
{
// 摘要:
// 返回⼀个循环访问集合的枚举器。

//
// 返回结果:
// 可⽤于循环访问集合的 System.Collections.Generic.IEnumerator<T>。

IEnumerator<T> GetEnumerator();
}
IEnumerable<T> 实现IEnumerable接⼝⽅法,那IEnumberable做什么的,其实就提⾼可以循环访问的集合。

说⽩了就是⼀个迭代。

再来看看ICollection:
// 摘要:
// 定义操作泛型集合的⽅法。

//
// 类型参数:
// T:
// 集合中元素的类型。

[TypeDependency("System.SZArrayHelper")]
public interface ICollection<T> : IEnumerable<T>, IEnumerable
原来ICollection<T> 同时继承IEnumerable<T>和IEnumerable两个接⼝,按我的理解就是,ICollection继续它们2个接⼝⽽且扩展了⽅法,功能强多了。

由原来的步枪变成半⾃动步枪
我们继续看IList:
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
靠 IList 继承它们三个接⼝,怪不得功能这么多啊,那应该属于全⾃动步枪了
最后来看看List:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
这个时候⼤家仔细看看,它们都是接⼝,只有List 是类,不仅实现它们的接⼝,⽽且还扩展了太多的⽅法给我利⽤。

哇靠,⼏乎所有功能都能实现了,简直是激光步枪
按照功能排序:List<T> 《IList<T> 《ICollection<T>《IEnumerable<T>
按照性能排序:IEnumerable<T>《ICollection<T>《IList<T>《List<T>。

相关文档
最新文档