泛型List和IList

    首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。

    它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。

    不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList<T>就爱莫能助了。


    1、当你只想使用接口的方法时,ILis<>这种方式比较好.他不获取实现这个接口的类的其他方法和字段,有效的节省空间.

    2、IList <>是个接口,定义了一些操作方法这些方法要你自己去实现

          IList <Class> IList0=new List <Class>();

          List <Class> List0 =new List <Class>();

    这两行代码,从操作上来看,实际上都是创建了一个List<Class>对象的实例,也就是说,他们的操作没有区别。只是用于保存这个操作的返回值变量类型不一样而已。

    那么,我们可以这么理解,这两行代码的目的不一样。

         List <Class> List0 =new List <Class>();

   是想创建一个List<Class>,而且需要使用到List<T>的功能,进行相关操作。

         IList <Class> IList0 =new List <Class>();

   只是想创建一个基于接口IList<Class>的对象的实例,只是这个接口是由List<T>实现的。所以它只是希望使用到IList<T>接口规定的功能而已。

    3.接口实现松耦合...有利于系统的维护与重构...优化系统流程...鼓励使用接口,这样可以实现功能和具体实现的分离.


      当你用到设计的时候当然是IList合理一些。用做数据容器遍历或者排序,还是选择List好一点










 

            //list1.OrderBy(i => i.Id);             timer.Stop(); 

            Console.Write("Count:" + count + ", List time:");             Console.WriteLine(timer.Elapsed.Ticks);   

            timer = new Stopwatch();             timer.Start(); 

            IList<TestClass> list2 = new List<TestClass>();             for (int i = 0; i < 10000000; i++)             { 

                TestClass tc = new TestClass();                 tc.Id = i; 

                tc.Name = "Test Data" + i;                 list2.Add(tc);             }  

            int count2 = 0; 

            foreach (var tc in list2)             { 

                if (tc.Id >= 1 && tc.Id < 1000)                 { 

                    count2++;                 }             } 

            //list2.OrderBy(i => i.Id);             timer.Stop(); 

            Console.Write("Count:" + count2 + ", IList time:");             Console.WriteLine(timer.Elapsed.Ticks);  

            Console.Read();          }    

当我们都去遍历IList和List的时候,注意我取的数据是1~1000之间,经过反复测试,IList的效率确实是要低一些。那就更不用说数据量更大的时候,请看输出框: 










   

但是,当我取的数据是1~500的时候, IList似乎效率还是要慢一些。 

 另外,可能有的朋友会说,你把前面的for循环放在外面比较呢,这个我也做过测试,结果还是一样,List效率要好于IList 

同样的方法,我测试了,IList和List的OrderBy的效率,List均有胜面,高效一筹。所以,什么时候用IList和List自己去斟酌,当你用到设计的时候当然是IList合理一些。用做数据容器遍历或者排序,还是选择List好一点。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值