C 泛型與非泛型集合類的區別與使用詳解

2021-10-02 07:49:21 字數 1723 閱讀 8833

一.泛型與非泛型集合類在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類之間或間接為所有類的父...