1.什麼是泛型?
--首先看下面的例子:
class myintclass
public int pop()
}上面的例子宣告了乙個myintclass類,它實現了乙個int型別的棧,它允許將int壓入棧,也可彈出。如果我們現在需要乙個float的型別實現相同的功能,那麼我們需要將以上**複製貼上,將類名改變並且需要將所有的int型別的地方換成float型別,這樣需要程式另外的申請記憶體來儲存float型別的新的類,消耗了記憶體空間
為了解決以上的不便,c#2.0後引進了泛型,他提供了一種更加精準的實現以上**的方式。泛型允許我們用不同的型別進行例項化,在宣告類的時候只是做了乙個類的佔位符的作用,而在例項化是才指明具體的類。
2.泛型類
--宣告泛型類:
class mystack
所以第乙個例子用泛型的方式宣告就是如下:
class myintclass
public t pop()
}當泛型希望多個提供多個實體型別是,在尖括號中用逗號隔開即可。例:
3.約束:由於泛型類在宣告的時候不知道要提供的實體的類是什麼型別,由於所有的型別都繼承自object類,所以泛型只能實現tostring,equals和gettype這些成員。如果訪問之外的成員將會出現錯誤。例:
class myclass
}class prpgram
結果為:10
hello word!
5.泛型介面的宣告和非泛型介面的宣告基本一樣,只是在尖括號中填入型別引數,泛型型別在使用時跟非泛型介面一樣
c 複習之泛型程式設計入門
目前感覺對泛型程式設計理解的不夠深,現主要對泛型簡單的應用做個總結。泛型程式設計主要包括 函式模板和類模板 1 函式模板 1.1函式模板定義及使用 template template 作為模板關鍵字,從原理上注意編譯器並不是把函式模板處理成任意型別的函式 而是編譯器把函式模板通過具體的型別產生不同的...
泛型之泛型類
public class a 構造引數型別上使用泛型 public a t t 方法返回值上使用泛型 public t gett 方法的引數上使用泛型 這是泛型類的方法,而不是泛型方法 public void sett t t 方法的返回值和引數型別上使用泛型 public t foo t t pu...
泛型之泛型類
public class a 構造引數型別上使用泛型 public a t t 方法返回值上使用泛型 public t gett 方法的引數上使用泛型 這是泛型類的方法,而不是泛型方法 public void sett t t 方法的返回值和引數型別上使用泛型 public t foo t t pu...