电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

IList和List的 区别(写得太好了)VIP免费

IList和List的 区别(写得太好了)_第1页
1/4
IList和List的 区别(写得太好了)_第2页
2/4
IList和List的 区别(写得太好了)_第3页
3/4
已经有很多人讨论过IList和List的区别,恩,我也赞同其中的一些观点,其实他们二者也是有优有劣的,看你着重用在哪个方面,先贴一下我赞同的意见,基本上也都是网友们总结的。首先IList泛型接口是ICollection泛型接口的子代,并且是所有泛型列表的基接口。它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList可以胜任。其次,IList<>是在.netframework2.0里面才支持的1.不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList就不太好使了。因为他的效率要慢。后面会一一讲到。2、IList<>是个接口,定义了一些操作方法这些方法要你自己去实现,List<>是泛型类,它已经实现了IList<>定义的那些方法IListIList11=newList();ListList11=newList();这两行代码,从操作上来看,实际上都是创建了一个List对象的实例,也就是说,他们的操作没有区别。只是用于保存这个操作的返回值变量类型不一样而已。那么,我们可以这么理解,这两行代码的目的不一样。ListList11=newList();是想创建一个List,而且需要使用到List的功能,进行相关操作。而IListIList11=newList();只是想创建一个基于接口IList的对象的实例,只是这个接口是由List实现的。所以它只是希望使用到IList接口规定的功能而已。3.接口实现松耦合...有利于系统的维护与重构...优化系统流程...鼓励使用接口,这样可以实现功能和具体实现的分离.这些说的都是有道理的,那么接刚才第一点的话题说,为什么说用到数据处理,或者排序IList就不太好使了呢。这个也是要根据数据量来的。我做了如下测试publicclassTestClass{publicintId{get;set;}publicstringName{get;set;}}staticvoidMain(string[]args){ListTest();}privatestaticvoidListTest(){Stopwatchtimer=newStopwatch();timer.Start();Listlist1=newList();for(inti=0;i<10000000;i++){TestClasstc=newTestClass();tc.Id=i;tc.Name="TestData"+i;list1.Add(tc);}intcount=0;foreach(vartcinlist1){if(tc.Id>=1&&tc.Id<1000){count++;}}//list1.OrderBy(i=>i.Id);timer.Stop();Console.Write("Count:"+count+",Listtime:");Console.WriteLine(timer.Elapsed.Ticks);timer=newStopwatch();timer.Start();IListlist2=newList();for(inti=0;i<10000000;i++){TestClasstc=newTestClass();tc.Id=i;tc.Name="TestData"+i;list2.Add(tc);}intcount2=0;foreach(vartcinlist2){if(tc.Id>=1&&tc.Id<1000){count2++;}}//list2.OrderBy(i=>i.Id);timer.Stop();Console.Write("Count:"+count2+",IListtime:");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好一点。欢迎批评

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

IList和List的 区别(写得太好了)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部