共同点:

   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

C# —— IList, ArrayList与List的区别详解的更多相关文章

  1. 基于Java的打包jar、war、ear包的作用与区别详解

      本篇文章,小编为大家介绍,基于Java的打包jar.war.ear包的作用与区别详解.需要的朋友参考下   以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.cla ...

  2. Android中Intent传值与Bundle传值的区别详解

    Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...

  3. php 去除html标记--strip_tags与htmlspecialchars的区别详解

    php 去除html标记--strip_tags与htmlspecialchars的区别详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-26   本篇文章是对php中去除html ...

  4. HTTP POST GET 本质区别详解

    HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Ht ...

  5. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  6. [转]ESCAPE()、ENCODEURI()、ENCODEURICOMPONENT()区别详解

    escape().encodeURI().encodeURIComponent()区别详解 JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encode ...

  7. phpcms加载系统类与加载应用类之区别详解

    <?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...

  8. Bind和Eval的区别详解

    原文:Bind和Eval的区别详解 1.简单描述Eval和Bind的区别 绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名& ...

  9. 转-HTTP POST GET SOAP本质区别详解

    原文链接:HTTP POST GET SOAP本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认 ...

随机推荐

  1. 【英语】Bingo口语笔记(27) - 如何培养口语语感

  2. SSH思路

    hibernate的配置写到spring的配置中,用spring管理和调用hibernate的工厂和session等.struts的话,通常有2中.一种是用spring中的一个工厂类代替struts的 ...

  3. AVL树的旋转实现

    AVL树:带有平衡条件的二叉查找树,即一棵AVL树是其每个节点的左子树和右子树的高度最多相差1的二叉查找树.一般通过Single Rotate和Double Rotate来保持AVL树的平衡.AVL树 ...

  4. IOS设计模式之四(备忘录模式,命令模式)

    本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...

  5. trunc的使用

    1.日期比较时精确到日,可以使用 TRUNC(sysdate,'dd')函数.函数支持格式有:yyyy MM  dd  hh Mi可以用 select TRUNC(sysdate,'yyyy') fr ...

  6. 使用crs_setperm修改RAC资源的所有者及权限

    Oracle RAC 集群中,对于各种资源的管理,也存在所有者与权限的问题.crs_getperm与crs_setperm则是这样的一对命令,主要用于查看与修改集群中resource的owner,gr ...

  7. 怎样为EXCEL2010添加下拉列表

    注意,下面是Excel2010的步骤和截图,其他版本的Excel类似.   首先用鼠标左键点击你要添加下拉列表的单元格. 如果你只想部分区域有下拉列表,也可以选择部分区域. 下面图片是选择的整个列都是 ...

  8. Ioc注入方式写dubbo client(非set beans)

    @Autowired注解的方式注解 Spring框架中进行注入式,使用@Autowired. @Autowired可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作,这里必须明确:@Auto ...

  9. linux 学习网站

    study-Area:http://www.study-area.org 鸟哥的私房菜:http://linux.vbird.org 鸟哥的私房菜课后答案:http://wapwenku.baidu. ...

  10. JSON 教程学习进度备忘

    书签:跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容: 1. ______________ 知识点:1 ...