共同点:

   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口语笔记(30) - 表示“拒绝”

  2. 【解题报告】[动态规划] RQNOJ PID106 / 最大加权矩形

    原题地址:http://www.rqnoj.cn/problem/106 解题思路: 一维的情况下求最大字串和的状态转移方程是:s[i]=max{s[i-1]+a[i],a[i]} 二维的情况下,只要 ...

  3. linux shell中的 #!/bin/bash

    #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径. bash只是shell的一种,还有很多其它shell,如:sh ...

  4. Delphi 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。

    对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...

  5. 【转】linux之ln命令

    转自:http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位 ...

  6. 在VMware虚拟机中安装CentOS 7

    [声明] 欢迎转载,但请保留文章原始出处 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3917 ...

  7. javascript函数sort

    sort函数用于对数组的元素进行排序 语法:arrayObject.sort(sortby); 参数sortby可选,规定排序顺序,必须是函数. 如果调用该方法时没有使用参数,将按照字幕顺序进行排序, ...

  8. STL&quot;源码&quot;剖析-重点知识总结

    STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1.STL概述 STL提供六大组件,彼此可以组合 ...

  9. log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具

    1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 2. Log4net的结构如下 ...

  10. Java基础 —— 面向对象

    面向对象的程序设计: 1. 基本特征:抽象性,封装性,继承性,多态性. 2. 类及成员的访问控制:private:同一类中: default:同一包中: protected:子类中: public:全 ...