前言數組
在工做中常常遇到C#數組、ArrayList、List、Dictionary存取數據,可是該選擇哪一種類型進行存儲數據,對於初學者的我一直不知道該怎麼取捨。因而抽空好好看了下他們的用法和比較,在這裏總結下來,後面有須要改進的再更新。性能
初始化spa
數組:code
int[] buff = new int[6];
ArrayList:blog
ArrayList buff = new ArrayList();
List:索引
List<int> buff = new List<int>();
Dictionary:內存
Dictionary<int,string> buff = new Dictionary<int,string>;
分析比較string
從上面初始化的幾種類型能夠看出,他們都屬於引用類型。其中數組、List、Dictionary在初始化的時候須要指定其元素類型,而ArrayList不須要指定類型。而在其中只有數組在初始化時設置了其大小。io
數組:在初始化時必須指定其大小和類型,他在內存中是連續存儲的,因此能夠看出數組的索引速度是很是快的。在肯定了數組的長度和類型後,選擇數組存儲數據是比較好的選擇。不適合插入操做。table
ArrayList:在初始化的時候不須要指定其大小和類型。他能夠存儲不一樣的數據類型,可是在存取得過程當中會引發裝箱和拆箱,下降了性能。插入操做方便。
List:在初始化的時候必須指定其類型,可是不須要指定大小,因此他不會像ArraryList那樣在存取過程當中引發裝箱和拆箱操做。在類型相同的狀況下,List和數組的性能至關。插入操做方便。
Dictionary:在初始化的時候也必須指定其類型,並且他還須要指定一個Key,而且這個Key是惟一的。正由於這樣,Dictionary的索引速度很是快。可是也由於他增長了一個Key,Dictionary佔用的內存空間比其餘類型要大。他是經過Key來查找元素的,元素的順序是不定的。
類型 | 肯定大小 | 肯定類型 | 索引速度 | 性能 |
數組 | Y | Y | 很快 | 最高 |
ArrayList | N | N | 通常 | 低 |
List | N | Y | 很快 | 高 |
Dictionary | N | Y | 最快 | 通常 |
注:以上內容若有描述不妥,請留言,分享知識,共成長!