程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#泛型集合之List

C#泛型集合之List

編輯:C#入門知識

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(" El: {0}", s);
  }
6、插入元素 By Insert:
  myList.Insert(index, "VB"); //插入到指定的索引處(index不能大於Capacity-1)
7、移除元素 By Remove:
  myList.Remove("C#");//移除特定對象的第一個匹配項:如有兩個“C#”,則移除一個既索引小的那個。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved