Asp.Net IEnumerable,ICollection,IList,List区别

做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>

规律:功能越多,性能越低,所以一般情况下mvc的view页面头部使用IEnumerable<T>的比较多

那亲们可以根据自身的需求调用不能数组来实现功能,不要一味使用List,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值