List
表示可以依照索引存取的強型別物件清單。 提供搜尋、排序和管理清單的方法。
建構函式
List<T>()     其為空白執行個體且具有預設的初始容量。
List<T>(IEnumerable<T>)     從指定之集合複製的元素,且具有容納複製之元素數目的足夠容量。
List<T>(Int32)     這個執行個體是空白且可具有指定的初始容量。

屬性
Capacity     在不需要調整大小之下,取得或設定內部資料結構可以保存的元素總數。
  Capacity 是需要調整大小前 List<T> 可以存放的元素數目。Count 則是 List<T> 中實際含有的元素數目。
  Capacity 永遠大於或等於 Count。 加入元素時,如果 Count 超過 Capacity,則會先藉由自動重新配置內部陣列而增加容量,然後再複製舊元素並加入新元素。
  可以透過呼叫 TrimExcess 方法或明確地設定 Capacity 屬性的方式來降低容量。 當明確地設定 Capacity 的值時,也會重新配置內部陣列以容納指定的容量,並且會複製所有元素。
  http://msdn.microsoft.com/zh-tw/library/y52x03h2.aspx
 
方法
Add     將物件加入至 List<T> 的結尾。
AddRange     將特定集合的元素加入至 List<T> 的結尾。
BinarySearch(T)     使用預設的比較子 (Comparer) 並傳回元素以零起始的索引,來搜尋元素之整個排序的 List<T>。 必須已經依照比較子實作排序過,否則結果會不正確。這個方法為 O(log n) 運算。
BinarySearch(T, IComparer<T>)     使用指定的比較子並傳回元素以零起始的索引,來搜尋元素之整個排序的 List<T>。
Clear     將所有元素從 List<T> 移除。
Contains     判斷某元素是否在 List<T> 中。 這個方法是 O(n) 運算。
CopyTo(T[])     將整個 List<T> 複製到相容的一維陣列,從目標陣列的開頭開始。
Find     搜尋符合指定之述詞所定義的條件之元素,並傳回整個 List<T> 內第一個相符的項目。
IndexOf     多載。 傳回 List 或其中一部分中值的第一個項目之以零起始的索引。     
Insert     將項目插入 List 中指定的索引處。
InsertRange     將集合的元素插入至位於指定索引的 List 中。
Remove     從 List 移除特定物件的第一個相符項目。
RemoveAt     移除 List 中指定之索引處的項目。
Sort     多載。 排序 List 或其中一部分中的元素。
ToArray     將 List 的元素複製到新的陣列。
TrimExcess     將容量設為 List 中項目的實際數目,如果該數目小於臨界值。
 
List, ArrayList 效能比較
http://www.dotblogs.com.tw/yc421206/archive/2009/10/22/11213.aspx

再來只細研究一下 capacity, 原來初始是 0, 當有值時 4, 當不夠用時給兩倍 8.
using System;
using System.Collections.Generic;
using System.Text;

public class Example
{
    public static void Main(string[] args)
    {
        List<int> l = new List<int>();
        output(l);
        l.Add(1);
        output(l);
        l.AddRange(new int[] { 2, 3, 4, 5 });
        output(l);
        l.AddRange(new int[] { 6, 7, 8, 9 });
        output(l);
        Console.ReadKey();
        //List count=0, capacity=0
        //List count=1, capacity=4
        //List count=5, capacity=8
        //List count=9, capacity=16
    }

    static void output(List<int> l)
    {
        Console.WriteLine("List count={0}, capacity={1}", l.Count, l.Capacity);
    }
}
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 py3939 的頭像
    py3939

    老爹寫程式

    py3939 發表在 痞客邦 留言(0) 人氣()