C#---API-02(Application Programming Interface-02)

一、泛型概述

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)的元素一定要嚴格遵守類型約束?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,194評論 1 10
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,679評論 18 399
  • object 變量可指向任何類的實例,這讓你能夠創(chuàng)建可對任何數(shù)據(jù)類型進程處理的類。然而,這種方法存在幾個嚴重的問題...
    CarlDonitz閱讀 1,020評論 0 5
  • 一看到這個標題你是否會想起一本書,書名和標題同名。 書中第一個故事敘述的就是一位大叔和一個女孩在一起工作的時候發(fā)生...
    ZoeGary9閱讀 392評論 0 1
  • 異常的疲憊,早晨寫了題目,就中斷忙碌去了,一直到夜半,終于消停安靜,卻已經(jīng)是精疲力盡的狀態(tài)。 每天起床開始,就很疲...
    Jessy自由行走的貓閱讀 600評論 0 2

友情鏈接更多精彩內(nèi)容