一、定義
public class stack
t m_items;
public void push(t item)
public t pop()
public stack()
二、使用
stactstack = new stack()();
stack.push(1);
stack.push(2);
//stack.pust("sss");會出錯
int number = stack.pop();
三、好處
1、效能高
2、型別安全
3、可重用
四、在編譯泛型類時只是乙個佔位符,在例項化時會替換為特定的型別。
五、結構體中使用泛型
public struct point
t x;
t y;
使用:point point;
point.x =1; point.y =1;
六、使用預設值,值型別是0,引用型別是null
t t = default(t);
七、使用多個也是可以的 public class nodes
另外乙個使用nodes的類linkedlist也必須使用泛型。public class linkedlist
使用別名using list = linkedlist;就可以使用list list = new list()進行例項化了。
八、泛型約束
1、派生約束,指定引數必須從什麼類和介面派生。
比如在查詢時要比較,必須有icomparable約束。
public class nodeswhere k:icomparable,另外也可以用where k:icomparable,防止裝箱。
具體語法是:public class class名稱《引數1,引數2,...> where 引數1:類,介面1,介面2 where 引數2:...
2、建構函式約束,表示引數必須有建構函式。
public class nodeswhere t:new()
其中nodes中使用new t()時必須有建構函式約束。
3、引用/值約束
public class nodeswhere t:struct //值型別
public class nodeswhere t:class//引用型別
以上的約束的可以共存,但是有些不能共存。太多了,反正會出錯,就不寫了。
順序是: where 引數1:引用/值約束,派生約束,建構函式約束。
C 2 0新增功能02 泛型
c 語言和公共語言執行時 clr 的 2.0 版本中新增了泛型。泛型將型別引數的概念引入 net framework,這樣就可以設計具有以下特徵的類和方法 在客戶端 宣告並初始化這些類和方法之前,這些類和方法會延遲指定乙個或多個型別。泛型定義 泛型是為所儲存或使用的乙個或多個型別具有佔位符 型別形參...
c 2 0泛型學習 一
1using system 23public class stack 410 public stack int size 11 15 public void push object item 16 23 public object pop 24 30 else 31 35 36 37 2.使用泛型的...
C 2 0泛型介紹之簡單泛型類。
下面是乙個簡單的泛型類。public class genericclass f,t public genericclass f name,t age public f name set public t age set 這是乙個最簡單的泛型類了。f,t就是就是型別引數。可以是乙個物件,也可以是某種資...