1、命名空间:
System.Collections.Generic(程序集:mscorlib)
2、描述:
  1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。
  2)、是ArrayList类的泛型等效类。
  3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。
  4)、可以接收null空引用(VB中的Nothing)。
  5)、允许重复元素
3、创建及初始化:
  List<string> myList = new List<string>();//初始Capacity为 零
  List<string> myList2 = new List<string>(30); //初始Capacity为 30
  List<string> myList3 = new List<string>(new string[] { "1", "a", "2", "b" });//初始Capacity 为 4,并且元素已被复制
4、Capacity与Count
  1)、Capacity在需要调整大小之前可存储的元素数;Count实际存储的元素数。
  2)、Capacity总是大于或者等于Count
  通过Reflector查看add()方法对Capacity和Count的影响:
  在 List<T>中:
    private T[] items;
    private int _size;
    public int Count{
      get{
        return this._size;
      }
    }
    public int Capacity
    {
      get{
        return this._items.Length;
      }
      set{
        //......
      }
    }
  当我们调用Add方法添加元素的时候,其内部实现为:
  public void Add(T item)
  {
    if(this._size == this._items.Length)
    {
      this.EnsureCapacity(this._size + 1); //扩充Capatity
    }
    this._items[this._size++] = item;
    //.......
  }
  private void EnsureCapacity(int min)
  {
      if (this._items.Length < min)
      {
          int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
          if (num < min)
          {
              num = min;
          }
          this.Capacity = num;
      }
  }
  至此,Capacity和Count之间的异同可以一目了然。
  通过TrimExcess 方法可以使Capacity 等于 Count;
  TrimExcess的内部实现:
  public void TrimExcess()
  {
       int num = (int) (this._items.Length * 0.9);
       if (this._size < num)
       {
            this.Capacity = this._size;
       }
  }
  在这里,我们也可以明白MSDN上的这句话:“如果列表大于容量的 90%,则 TrimExcess 方法将不执行任何操作”。
5、遍历元素:
  foreach (string s in myList)
  {
      Console.WriteLine("\nEl: {0}", s);
  }
6、插入元素 By Insert:
  myList.Insert(index, "VB"); //插入到指定的索引处(index不能大于Capacity-1)
7、移除元素 By Remove:
  myList.Remove("C#");//移除特定对象的第一个匹配项:如有两个“C#”,则移除一个既索引小的那个。

C#泛型集合之List的更多相关文章

  1. C# DataSet装换为泛型集合

    1.DataSet装换为泛型集合(注意T实体的属性其字段类型与dataset字段类型一一对应) #region DataSet装换为泛型集合 /// <summary> /// 利用反射和 ...

  2. Linq操作非泛型集合

    我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable.但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable.那咋 ...

  3. c#利用泛型集合,为自己偷偷懒。

    有人说"越懒"的程序员进步的越快!其实还挺有道理.亲身体验,从刚出来工作到现在,自己变"懒"了许多,但感觉写出来的代码确有了不少提升.刚开始啊,同样的代码,赋值 ...

  4. 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合

    1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...

  5. GsonUtils.getGson().fromJson() 转泛型集合

    List<QiTaFree> qiTaFreeList = GsonUtils.getGson().fromJson(exhiMain.getQiTaFressJson(), new Ty ...

  6. 快速入门系列--CLR--03泛型集合

    .NET中的泛型集合 在这里主要介绍常见的泛型集合,很多时候其并发时的线程安全性常常令我们担忧.因而简述下.NET并发时线程安全特性,其详情请见MSDN. 普通集合都不支持多重并发写操作 部分支持单线 ...

  7. 类库,委托,as.is,var,泛型集合

    类库: 就是让别人调用你写的方法,并且不让别人看到你是怎么实现的.(比如说一些核心文件) 如果有功能你不会做,需要别人帮忙,那么你的同事可以帮你写好一个类,然后你来调用这个类中的方法,完成你的项目. ...

  8. 面向对象——is和as运算符、泛型集合 List<T>

    二:is和as运算符: (1) is运算符 is 运算符用于检查对象是否与给定类型兼容.如果兼容返回true,否则返回false; 一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类; 例如 ...

  9. Reflection和Expression Tree解析泛型集合快速定制特殊格式的Json

    很多项目都会用到Json,而且大部分的Json都是格式固定,功能强大,转换简单等,标准的key,value集合字符串:直接JsonConvert.SerializeObject(List<T&g ...

  10. C#—类库、委托、is和as运算符、泛型集合

    类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问 ...

随机推荐

  1. 用java编写一个微博登陆页面

    上次也写了一个微博登陆页面,不过功能还不够完善.今天重新完善了一些功能,分享出来给大家. 基本功能如下: (1)具有类似新浪微博的用户注册图形界面. (2)使用用户名或手机号注册,注册时需要提供新密码 ...

  2. JFrame的层次结构以及背景颜色设置问题

    JFrame的层次结构: JFrame:窗体,也就是窗口的框架.默认为不可见.不透明的(可以使用isVisible和isOpaque来验证).创建窗口时,最后一步需要调用setVisible(true ...

  3. 项目常用Javascript分享,包含常用验证和Cookie操作

    function IsEmail(str) { var r = /^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; if (r.test(str)) ...

  4. django celery的分布式异步之路(一) 起步

    如果你看完本文还有兴趣的话,可以看看进阶篇:http://www.cnblogs.com/kangoroo/p/7300433.html 设想你遇到如下场景: 1)高并发 2)请求的执行相当消耗机器资 ...

  5. iOS自动化环境搭建——macaca

    macaca-java for ios 自动化环境搭建 基础原理解析:https://testerhome.com/topics/6608 一.环境搭建 1.安装eclipse; -----Java开 ...

  6. SAP问题【转载】

    1.A:在公司代码分配折旧表时报错? 在公司代码分配折旧表时报错,提示是"3000 的公司代码分录不完全-参见长文本" 希望各位大侠帮我看看. 3000 的公司代码分录不完全-参见 ...

  7. Thinking in React Implemented by Reagent

    前言  本文是学习Thinking in React这一章后的记录,并且用Reagent实现其中的示例. 概要 构造恰当的数据结构 从静态非交互版本开始 追加交互代码 一.构造恰当的数据结构 Sinc ...

  8. 使用Git与Github创建自己的远程仓库

    原因 早就想创建一个自己的远程仓库,方便发布到Nuget上,自己用也好,项目组用也好,都方便. 今天抽了个时间建了个仓库,随便记下溜方便后来的人. 流程 1,创建自己的GitHub仓库 首先需要到 G ...

  9. Azure 基础 : 使用 template 简化部署

    笔者在前文中介绍了如何使用 PowerShell 脚本在 Azure 上创建虚拟主机.正如你所看到的,整个创建过程还是有点繁琐的,因为我们需要使用 PowerShell 脚本创建并关联所有相关的组件. ...

  10. angular核心$watch,$digest,$apply之间的联系

    浏览器事件发生时,会在浏览器的上下文window中执行,而angular有自己的上下文angular content,angular 事件在自己的上下文angular content中执行. $wat ...