一:數組數組
//定義 string[] strs = new string[5]; //賦值 strs[0] = "A"; strs[1] = "B"; //修改 strs[1] = "C"; //取值 string getStr = strs[1];
優勢:數組在內存中是連續存儲的、因此它的索引速度是很是快的、時間複雜度爲O(1)、並且它的賦值/修改/獲取元素也是很是簡單的。安全
缺點:一、定義數組的時候須要指定數組的長度(過長會形成內存浪費、太短會致使程序異常System.IndexOutOfRangeException:"索引超出數組界限")性能
二、插入和刪除元素效率低、也比較麻煩。spa
在不清楚數組長度的時候、就很尷尬了。 因此C#提供了ArrayList了來處理這些問題...code
二:ArrayList對象
使用大小會根據須要動態增長的數組。blog
//初始化 ArrayList list = new ArrayList(); //添加元素 list.Add(1); list.Add("A"); list.Add(0.1); //修改元素 list[2] = "B"; //指定索引插入元素 list.Insert(1, "ABC"); //移除元素 list.RemoveAt(1);
優勢:一、ArrayList大小會根據須要動態增長的數組。排序
二、實現了IList接口、能夠方便的對數據進行添加、插入和刪除。索引
缺點:一、ArrayList會把插入的數據都當作object類型來存儲、在操做數據的時候可能會由於類型不匹配而出現異常、它是非類型安全的對象。接口
二、因爲存儲的是object類型、在使用的時候進行類型轉換、會形成裝箱拆箱、從而損耗性能。
裝箱:把值類型轉換成引用類型;
拆箱:把引用類型轉換成值類型。
//裝箱 int i = 1; object obj = (object)i; //拆箱 int j = (int)obj;
因爲ArrayList存在類型不安全、裝箱拆箱損耗性能。.NET Framework 2.0 推出了List<T>
三:List<T>
表示可經過索引訪問的對象的強類型列表。 提供用於對列表進行搜索、排序和操做的方法。
//初始化 List<int> list = new List<int>(); //添加 list.Add(12); list.Add(34); //編譯器會進行類型驗證、下面代碼編譯失敗 //list.Add("ABC"); //修改 list[0] = 1; //移除 list.RemoveAt(0);
優勢:因爲泛型List是強類型、編譯器會驗證類型安全。這樣就避免了類型的不安全、以及數據強制轉換致使裝箱拆箱損耗性能。