一、泛型概述
1. ?泛型
1.1 泛型是什么?
泛型(generic)是C#語言2.0和通用語言運行時(CLR)得一個新特性。
1.2 為什么引入泛型?
泛型編程是一種編程范式,他利用“參數(shù)化類型”將類型抽象化,從而實現(xiàn)更為靈活的復用。
定義:public void 函數(shù)名<T>(ref T 參數(shù)1,ref T 參數(shù)2)
1.3 泛型的優(yōu)點
* ? 提供了一個強類型的編程模式;
* ? 編譯時類型檢查減小了運行時轉(zhuǎn)換異常的幾率;
* ? 值類型不再需要裝箱操作;
* ? 緩解了代碼膨脹的情況;
* ? 性能得到提高;
* ? 減少了內(nèi)存消耗;
* ? 代碼可讀性好;
2. 泛型類、泛型方法
2.1 自定義泛型類
要創(chuàng)建反省類,只需在定義中包含尖括號語法
例:class Mylist<T>;class MyList<T1,T2>;
class 類名<T>
{
public void 方法名(T ?t1){.........}
}
2.2 Default 關(guān)鍵字
將值置該類型初始值
class MyClass<T>
{
public void Clear(T ?t1)
{
t1=defult(T);
console.writeline(t1);
}
}
MyClass <int> mc=new MyClass<int>();
mc.Clear(4);
---->輸出結(jié)果為0(string類型時為null)
3. 泛型參數(shù)的約束
在泛型中不能直接比較兩個參數(shù)的大小,因為兩個參數(shù)也許為任意不同類型的參數(shù),不能直接比較,應使用CompareTo方法。
static T GetBigger<T>(T ?x,T ?y) where T:IComparable
{
if(x.CompareTo(y)>0)//等同于if(x>y),如果x大于y返回1,等于返回0,小于返回-1
{
return ?x;
}
else
{
return ?y;
}
}
3.1 約束定義
強迫類型遵守一定的規(guī)范。
約束的語法是:where?T : constraint1, constraint2
Where是關(guān)鍵字,constraint1、constraint2是約束內(nèi)容:

4 ?泛型集合類
泛型類最常見的表現(xiàn)形式就是泛型集合類。

注意:一旦規(guī)定了集合泛型類型,集合內(nèi)的元素一定要嚴格遵守類型約束?。?!