zoukankan      html  css  js  c++  java
  • C# —— IList, ArrayList与List的区别详解

    共同点:

       IList, List , ArrayList 通俗一点来讲就是广义的数组,C#里面称之为集合。不同于一般的狭义的数组,它们可以存放任意类型的东西,在申明或者赋值的时候指定。 比如你写了一个类 Cake,然后想有一个结构来存放很多Cake的实例,那就可以用他们。
     
       区别:
       IList与List 通俗一点讲,只能存放同一类型的元素。
       比如声明的时候 声明为List<Cake> cakes=new List<Cake>(); 那么就只能用放cake的实例。
       在从cakes这个变量中取出元素的时候,取到的直接就是Cake类型。不需要做强行的转换,所以性能较好。
     
       如果想要让一个‘数组’存放各种类型的实例,比如有Cake,Juice, Bread,那么就用ArrayList
       ArrayList food=new ArrayList();
    注意这里没有指定它装的是什么类型的元素,所以可以随便装咯~
    当然,好处不能全让你占完了。在‘取’的时候就要麻烦一点了
    ArrayList里元素默认是 Object类型的,所以需要强制转换一下,在大数据时性能较差。

    再来说IList和List的区别:
    我的理解是,IList是一个接口,而List是一个确定的类。
    接口,当然就需要你去实现它的函数咯,如果你想这些函数有自己的特色,那么就自己写一个类去实现吧!
    然后声明的时候:IList<类型> kk=new 你实现的类名<类型>();
    当然你可以写成:IList<类型> kk=new List<类型>();
    相当于List实现了IList (事实上C# API中是这样定义的)
     
    如果你写成 List<类型> kk=new List<类型>();
    那就意味着你的代码,那些操作List的函数不能有丝毫改变,你得按规定办事。写好是什么,你就用什么。
     
    用法:
    以上三个集合的用法都很相似,跟Java也很相似
    假如有一个 List<Cake> cakes
    增、删、改、查的方法:
         cakes.Add(Cake t);//增
         cakes.Remove(int index);//删
         cakes.Remove(Cake t);//删
         cakes[]=//修改的数据  //查或者改
    

     注:转载自新浪博客  http://blog.sina.com.cn/s/blog_6cb117430100o0ul.html

  • 相关阅读:
    二分查找:思路很简单,细节是魔鬼
    今天遇到了 X-Y PROBLEM
    《工匠精神》读书笔记
    养成好的职业习惯
    php xdebug 调试
    Dockerfile的常见命令
    docker制作镜像
    脱坑笔记
    Java中代理
    2、遇到多个构造器参数的时候要考虑使用构建器
  • 原文地址:https://www.cnblogs.com/programsky/p/3816239.html
Copyright © 2011-2022 走看看