C# 中數組、ArrayList、List 區別

1. 數組


優點:數組在內存中是連續存儲的、所以它的索引速度是非常快的、時間複雜度爲O(1)、而且它的賦值/修改/獲取元素也是非常簡單的。


缺點:
1、定義數組的時候需要指定數組的長度(過長會造成內存浪費、過短會導致程序異常System.IndexOutOfRangeException:"索引超出數組界限")

  
2、插入和刪除元素效率低、也比較麻煩。

在不清楚數組長度的時候、就很尷尬了。
 所以C#提供了ArrayList了來處理這些問題...

2.
優點:ArrayList
1、ArrayList大小會根據需要動態增加的數組。
   
2、實現了IList接口、可以方便的對數據進行添加、插入和刪除。

缺點:
1、ArrayList會把插入的數據都當做object類型來存儲、在操作數據的時候可能會因爲類型不匹配而出現異常、它是非類型安全的對象。  
2、由於存儲的是object類型、在使用的時候進行類型轉換、會造成裝箱拆箱、從而損耗性能。
    
裝箱:把值類型轉換成引用類型;
    拆箱:把引用類型轉換成值類型。
由於ArrayList存在類型不安全、裝箱拆箱損耗性能。.NET Framework 2.0 推出了List<T>

3. List<T>
表示可通過索引訪問的對象的強類型列表。 提供用於對列表進行搜索、排序和操作的方法。
優點:由於泛型List是強類型、編譯器會驗證類型安全。這樣就避免了類型的不安全、以及數據強制轉換導致裝箱拆箱損耗性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章