一.泛型與非泛型集合類在c#程式中是乙個非常重要的基礎概念,這裡列乙個表來進行對比:
非泛型集合類
泛型集合類
描述arraylist
list
表示具有動態大小的物件陣列
hashtable
dictionary
由鍵值對組成的集合
sortedlist
sortedlist
和字典相似但有排序功能的集合
queue
queue
表示標準的先進先出(fifo)佇列
stack
stack
後進先出(lifo)佇列,提供壓入和彈出功能
arraylist中將所有元素都看成object型別的,是引用型別。
1.泛型與非泛型集合類在概念和功能上各有不同,其中非泛型集合類在取出值時需要進行型別的轉換操作,如果加值型別會引起裝箱和拆箱的操作,這會帶來巨大的效能額外開銷,如果掌握好泛型陣列之後可以不再需要用非泛型的陣列了,同時帶來型別安全的好處並減少在值型別和引用型別之間的裝箱和拆箱。
2.使用泛型型別可以最大限度地重用**、保護型別安全性以及提高效能。泛型最常見的用途是建立集合類 list。
3.可以建立:泛型介面、泛型類、泛型方法、泛型事件和泛型委託。
第一:arraylist(非泛型集合)和list(泛型集合)
arraylist arraylist1 =
newarraylist()
; arraylist1.
arraylist1.
add(
"a")
; arraylist1.
add(1)
; arraylist1.
add(
"b")
; response.
write
(arraylist1[1]
);array arraylist2 = array.
createinstance
(typeof
(string),
6);//先指定長度
arraylist2.
setvalue
("a",0
);arraylist2.
setvalue
("b",1
);response.
write
(arraylist2.
getvalue(1
));
list泛型集合
list與arraylist的區別》
arraylist可以new一下新增任意型別元素;list對新增的元素具有型別約束;
arratlist新增時裝箱,讀取時拆箱;list不需要裝箱,拆箱操作;
arratlist新增時裝箱,讀取時拆箱,因為arraylist中將所有元素都看成object型別的,是引用型別。
當涉及大量裝箱與拆箱操作時,必然會影響應用程式的效能。而是用泛型的集合類時就會減少裝箱與拆箱的工作,當存在大量資料時,自然可以提高很多效能。
在泛型定義中,泛型型別引數「」是必須指定的,list有更好的型別安全性,無須拆,裝箱。
泛型與非泛型集合類的區別及使用例程
非泛型集合類 泛型集合類 描述arraylist list 表示具有動態大小的物件陣列 hashtable dictionary 由鍵值對組成的集合 sortedlist sortedlist 和字典相似但有排序功能的集合 queue queue 表示標準的先進先出 fifo 佇列 stack st...
C 泛型類的集合和非泛型類的集合區別
using system.collections 非泛型類集合的命名空間。非泛型類的集合 不固定資料型別 using system.collections.generic 泛型類集合的命名空間。1 非泛型類的集合和泛型類的集合的區別 前者是不固定資料型別 後者固定資料型別 比如非泛型集合的array...
泛型集合,非泛型集合
arraylist 非泛型集合 list 泛型集合 集合跟陣列比較我們更容易理解。陣列 1,長度固定2,資料型別預先宣告 集合 1,長度可變2,資料型別預先宣告的為泛型集合,資料型別不限定為非泛型 arraylist 長度不固定,元素資料型別為object的集合。object類之間或間接為所有類的父...