C# 溫故而知新:數組 / Array / ArrayList / List

一. 數組

1. 數組 引用的命名空間是 using System數組

2. 其在內存中是連續存儲的,因此它的索引速度很是快,並且賦值與修改元素的值也很簡單。安全

//數組
string[] s=new string[2];

//賦值
s[0]="a";
s[1]="b";
//修改
s[1]="a1";

在數組中的兩個數據間插入數據很麻煩,且在聲明數組的時候必須指定數組的長度,數組的長度過長,會形成內存浪費,太短會形成數據溢出的錯誤。性能

二. Array

Array 就是 數組 的基類,其引用的命名空間是 using System。spa

三. ArrayList

ArrayList 引用的命名空間是 System.Collectionscode

1. 其在內存中存儲的數據來動態擴充與收縮的,因此,在聲明ArrayList對象時並不須要指定它的長度;對象

2. 在 ArrayList 中存儲的是對象 object,故使用該類時必須進行引用,且容許插入不一樣類型的數據;繼承

3. 同時繼承了IList接口,提供了數據存儲和檢索等方法。索引

// 聲明 ArrayList
ArrayList arrayList1 = new ArrayList();

//新增數據
arrayList1.Add("cde");
arrayList1.Add(5678);

//修改數據
arrayList1[2] = 34;
//移除數據
arrayList1.RemoveAt(0);
//插入數據
arrayList1.Insert(0, "qwe");

ArrayList 將其中的數據看成爲object類型來處理,在進行數據增刪改時,可能會因類型不匹配致使報錯,也就是ArrayList不是類型安全的。在存儲或檢索值類型時因須要進行裝箱和拆箱操做,致使性能耗損。接口

裝箱:簡單地說——將值類型的數據打包到引用類型的實例中:內存

// 裝箱 示例
string  s=」abc」;
object obj=(object)s;

拆箱:簡單地說——從引用數據中提取值:

// 拆箱 示例
object obj=」abc」;
string i=(string)obj;

四. List | 泛型

1. List 引用的命名空間是 using System.Collections.Generic

2. List 類是 ArrayList 類的泛型等效類,其大部分用法與 ArrayList 類似,由於 List 也繼承了 IList 接口;

3. 因爲 List 須要事先聲明集合內數據類型,所以其避免了裝箱與拆箱動做,保證了性能的高效。

//聲明 myList 爲 List 泛型,並指定爲 string 數據類型
List<string> myList = new List<string>();

//新增數據
myList.Add(「abc」);
//修改數據
myList[0] = 「def」;
//移除數據
myList.RemoveAt(0);
相關文章
相關標籤/搜索