泛型可讓您延遲編寫類別或方法中的程式設計元素的資料類型的規範,直到實際在程式中使用它的時候。換句話說,在聲明類別或方法的時候由於不知道使用者要傳入什麼樣類型的參數,所以在傳入類型的地方「挖一個坑(「<T>」)",使用它的時候我們再用具體資料類型填上。
泛型類別:
根據前面所學知識我們定義一個類別:
class Data { public int n_data; }
此時n_data的資料型態已經確定為int型,所以為他賦值的時候只能為寫int 類型,如果改為下面的泛型類別:
class Data<T> { public T n_data; }
此時n_data的資料型態還不確定是什麼類型,所以為他賦值的時候需要指定T也就是n_data的型別,也就是填坑,
也就是n_data的型別,也就是填坑, 了,上面的例子中是不能夠指定T為數組的,如果要讓n_data的型別為數組的話,下面的例子可以滿足:
Data<int> data = new Data<int>(); //指定T为int Data<string> data = new Data<string>(); //指定T为string結果為:2泛型方法: 這個 㟎我們以sw交換方法為例,在C++中swap函數是這麼寫的:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Example { class Data<T> //泛型类 { public T[] n_data; //泛型变量 public Data(int size) //构造方法,new的时候调用构造方法开辟空间 { n_data = new T[size]; } //输入 public void setdata(int index,T value) { n_data[index] = value; } //输出 public T getdata(int x) { return n_data[x]; } } class Program { static void Main(string[] args) { Data<int> data = new Data<int>(5); data.n_data[2] = 2; Console.WriteLine(data.n_data[2]); } } }
#include <iostream> using namespace std; template <typename T> void swap1(T &a,T &b) //也可以看作泛型 { T temp; temp = a; a = b; b = temp; } int main() { int a=0,b=1; swap1(a,b); cout<<a<<"\t"<<b<<endl; return 0; }結果:666 HC 這與C++的倒是非常相似ee結果:
關於泛型就介紹這麼多了,又什麼錯誤的地方歡迎指出^_^