C 學習日記30 泛型類 泛型方法 泛型委託

2021-07-06 03:10:37 字數 1448 閱讀 8936

泛型允許您延遲編寫類或方法中的程式設計元素的資料型別的規範,直到實際在程式中使用它的時候。換句話說,在宣告類或方法的時候由於不知道使用者要傳入什麼樣型別的引數,所以在傳入型別的地方「挖乙個坑(「<t>」)",使用它的時候我們再用具體資料型別填上。

根據前面所學知識我們定義乙個類:

class data

此時n_data的資料型別已經確定為int型別,所以為他賦值的時候只能為int 型別,如果改寫為下面的泛型類:

class data

此時n_data的資料型別還不確定是什麼型別,所以為他賦值的時候需要指定t也就是n_data的型別,也就是填坑,

datadata = new data();   

//指定t為int

datadata = new data(); 

//指定t為string

當然了,上面的例子中是不能夠指定t為陣列的,如果要讓n_data的型別為陣列的話,下面的例子可以滿足:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace example

//輸入

public void setdata(int index,t value)

//輸出

public t getdata(int x)

}class program}}

結果為:2

這個我們以swap交換方法為例,在c++中swap函式是這麼寫的:

#include using namespace std;

template void swap1(t &a,t &b) //也可以看作泛型

int main()

static void main(string args)}}

結果:666      hc      這與c++的倒是很相似啊

委託也有泛型的,接著上面的例子: 

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace example

//swap方法,ref是按位址傳遞

public void swap()

public void printvalue()

} class program}}

結果: 

關於泛型就介紹這麼多了,又什麼錯誤的地方歡迎指出^_^

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...

泛型類,泛型方法,泛型介面

泛型,就是一種不確定的資料型別。如果在類後面加上 這個類就變成了泛型類。這個 t可以使用任意的字母代替。表示定義了一種不確定的資料型別,這種不確定的資料型別必須在使用這個類 比如建立物件 的時候才能確定下來。如果希望縮小泛型的範圍,延後泛型的確定時間,讓泛型在呼叫方法的時候確定,那麼我們可以使用泛型...

泛型 (2)泛型類 泛型方法 泛型介面

一 泛型類 定義person類 package cn.itcast.p2.bean public class person implements comparable public person string name,int age public int compareto person p ov...