集合簡單的說就是數組的升級版。他可以動態的對集合的長度(也就是集合內最大元素的個數)進行定義和維護!
ArrayList非常類似於數組。也有人稱他為數組列表,它的容量可以根據需要進行動態擴充,而它的索引也會根據集合容量的擴展而重新分配和調整。也就是說ArrayList集合中的元素的下標是不確定的、可變的。
ArrayList類屬於System.Collections命名空間,這個命名空間包含接口和類,這些接口和類定義各種對象(如列表、隊列、位數組、哈希表和字典)的集合。
語法:
Using System.Collections;//導入命名空間 //定義ArrayList對象 ArrayList ArrayList集合名稱=new ArrayList(【長度】);
在ArrayList中我們可以通過索引訪問集合中的元素,但是當集合內的元素索引頻繁變化時要找出每個元素的位置(索引)就變得非常麻煩你了,
C#提供了一種叫HashTable的數據結構,通常稱他為哈希表也有人稱他為“字典”,給它起字典這個名字是因為它和字典非常類似,都是通過一個單詞查找出有關此單詞的更多信息,HashTable是通過鍵(Key)對值(Value)來組織數據的
泛型和泛型集合
通過ArrayList和HashTable存儲的數據都會轉換成Object類型,這就意味著它可以在一個集合中存儲不同的類型元素,在遍歷集合時就有可能引發強制類型轉換錯誤的問題。而泛型集合是類型安全的,在定義時就先定了集合中的元素類型,下面將詳細講解泛型和泛型集合。
泛型是C#2.0 中的一個新特性,泛型引入了一個概念:類型參數,通過使用類型參數(T)減少了運行時強制類型轉換或裝箱拆箱操作的風險,同過泛型可以最大限度的重用代碼,保護類型安全及提高性能,它的最常見應用是創建集合類,可以約束集合類中的元素類型。個比較典型的泛型集合是LIst<T>和Dictionary<K,V>,下面進行詳細講解、
在System.Collections.Generic命名空間中定義了去多泛型集合類這些類可以代替上面的ArrayList
定義一個List<T>集合的語法如下:
List <T> 集合名稱=new List<T>();
“<T>”中的T可以對集合中的元素類型進行約束,T表名集合管理的元素類型。
泛型集合Dictionary可以代替上面的HashTable
定義一個泛型集合Dictionary<K,V>的語法
Dictionary<K,V> 集合名稱=new Dictionary<K,V>();
在”<K,V>”中K表示集合中Key的類型,V表示Value的類型,他們的含義和List<K,V>是相同的
在集合中使用泛型只是泛型多種應用的一種,在類、方法等方面已有泛型的應用
定義一個泛型類的語法如下:
public class 類名<T> { //.... }
T指類型參數,代表具體的數據類型,可以是值類型也可以是引用類型