List集合類和ArrayList集合類都是C#語言中用於存儲集合數據的集合類,兩者都可靈活的插入、刪除以及訪問元素等等。但List集合和ArrayList集合的差別還是挺大的,首先List集合類是泛型集合,List集合中存儲的數據的類型都是確定的。ArrayList集合類為非泛型類集合,集合中存儲 ...
List集合類和ArrayList集合類都是C#語言中用於存儲集合數據的集合類,兩者都可靈活的插入、刪除以及訪問元素等等。但List集合和ArrayList集合的差別還是挺大的,首先List集合類是泛型集合,List集合中存儲的數據的類型都是確定的。ArrayList集合類為非泛型類集合,集合中存儲的元素未做詳細的限定,只要能轉換為object類型的變數都可往ArrayList集合類對象中存儲,因此ArrayList集合類是類型不安全的,在實際運行過程中可能出現因為類型轉換錯誤導致的運行時錯誤。
一、List集合和ArrayList集合的相同點
(1)兩者都是為集合類,可以存儲批量的集合數據
(2)兩者都可以靈活地插入、刪除、訪問元素等操作。
(3)兩者長度都是非固定的,集合類內部通過添加或刪除元素就可以動態改變數組長度。
二、List集合和ArrayList集合的不同點
(1)List集合為泛型集合,集合中存儲的數據類型是固定的。ArrayList集合為非泛型集合,集合中存儲的類型為object類型,多種不同的數據類型都可同時新增到一個ArrayList集合變數中。
(2)如果往List集合中新增非泛型指定的類型對象的時候,List集合會直接拋出編譯時異常,無法編譯通過。而ArrayList集合則是任何數據類型對象都可往裡寫入。
(3)List集合是類型安全的,從List集合中取出來的數據肯定是確定的類型。而ArrayList集合為非類型安全集合,在ArrayList集合元素新增以及類型轉換的時候一定要自行做好數據的校驗,否則可能出現程式運行時錯誤,例如ArrayList集合變數中既存儲Int類型數據,又存儲String類型數據,如果未做數據校驗,在程式中直接使用Convert.ToInt32將集合元素轉為Int的話,程式在編譯時不會報錯,但在程式運行過程中可能會出現字元串無法轉換而拋出運行時異常。
(4)List集合的速度比ArrayList集合速度快。
備註:原文轉載自博主個人站IT技術小趣屋,原文鏈接為C#中ArrayList集合類和List集合類的比較_IT技術小趣屋。
博主個人技術交流群:960640092,博主微信公眾號如下: