泛型是c#2.0
語言和公共語言執行庫
(clr)
中的乙個新功能。泛型將型別引數的概念引入
.net framework
,型別引數使得設計如下類和方法成為可能:這些類和方法將乙個或多個型別的指定推遲到客戶端**宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數
t,可以編寫其他客戶端**能夠使用的單個類,而不致引入執行時強制轉換或裝箱操作
.使用泛型型別可以最大限度地重用**、保護型別的安全以及提高效能。
泛型最常見的用途是建立集合類。
.net framework
類庫在system.collections.generic
命名空間中包含幾個新的泛型集合類。應盡可能地使用這些類來代替普通的類,如
system.collections
命名空間中的
arraylist
,hashtable
等。下面我們就來說下,幾個泛型集合類的用法:
一
.dictionary
和hashtable
類似
此類在.net framework 2.0
版中是新增的。表示鍵和值的集合。命名空間
:system.collections.generic
,程式集
:mscorlib
(在mscorlib.dll
中)class testgenericlist
catch (argumentexception) //
因為引入了泛型,所以鍵取出後不需要進行
object
到int
的轉換,值的集合也一樣
foreach (int i in fruit.keys)
值是:",i,fruit);}
按鍵值對遍歷
: foreach(keyvaluepair keyvalue in
fruit)
值是:", keyvalue.key, keyvalue.value);
} //
刪除指定鍵,值
fruit.remove(1);
//判斷是否包含指定鍵
if (fruit.containskey(1))
//清除集合中所有物件
fruit.clear();}}
dictionary
遍歷輸出的順序,就是加入的順序,這點與
hashtable
不同,其它方法如:
containskey
,containsvalue
,remove
等,使用方法基本一致。
二、
list
類
注意:此類在
.net framework 2.0
版中是新增的。表示可通過索引訪問的物件的強型別列表。提供用於對列表進行搜尋、排序和操作的方法。命名空間
:system.collections.generic
,程式集
:mscorlib
(在mscorlib.dll
中),list
類是arraylist
類的泛型等效類。 //
宣告乙個泛型類
class testgenericlist//向
list
中插入元素
names.insert(2, "
張三峰");
//移除指定元素
names.remove("
馬蜂"); }}
在決定使用
list
還是使用
arraylist
類(兩者具有類似的功能)時,記住
list
類在大多數情況下執行得更好並且是型別安全的。
如果對list
類的型別
t 使用引用型別,則兩個類的行為是完全相同的。但是,如果對型別
t 使用值型別,則需要考慮實現和裝箱問題。
如果對型別
t 使用值型別,則編譯器將特別針對該值型別生成
list
類的實現。這意味著不必對
list
物件的列表元素進行裝箱就可以使用該元素,並且在建立大約
500
個列表元素之後,不對列表元素裝箱所節省的記憶體將大於生成該類實現所使用的記憶體。
其實我們也可以自己定義乙個泛型類,如下所示:
//宣告乙個泛型類
public class itemlist
}class testgenericlist
static void main()}
泛型的用法還有很多種,如汎型方法,泛型委託,泛型介面等。
C 泛型用法說明
泛型是c 2.0 語言和公共語言執行庫 clr 中的乙個新功能。泛型將型別引數的概念引入 net framework 型別引數使得設計如下類和方法成為可能 這些類和方法將乙個或多個型別的指定推遲到客戶端 宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,可以編寫其他客戶端 能夠使用的單個...
C 泛型說明
泛型 即通過引數化型別來實現在同乙份 上操作多種資料型別。泛型程式設計是一種程式設計正規化,它利用 引數化型別 將型別抽象化,從而實現更為靈活的復用。c 泛型的作用概述 c 泛型賦予了 更強的型別安全,更好的復用,更高的效率,更清晰的約束。在乙個方法中,乙個變數的值是可以作為引數,但其實這個變數的型...
C 中typedef用法說明
typedef宣告提供了一種將識別符號宣告為型別別名的方法,用於替換複雜的型別名。解釋 在宣告中使用typedef說明符時,會指定這個宣告是typedef宣告,而不是變數或函式宣告。通常,typedef說明符出現在宣告的開頭,但允許它出現在型別說明符之後,或者出現在兩個型別說明符之間。typedef...