一、泛型的轉換
1、可以隱式轉換到object以及派生約束指定的類。
class myclasswhere t baseclass , isomeinte***ce
t可以轉換到object , baseclass , isomeinte***ce。
2、顯式轉換,可以轉換到介面,不能顯示轉換到類,是型別不安全的。
3、解決方法:
a. object temp=t;someclass obj =(someclass)temp;
b.用 is 和 as
if ( t is linkedlist)
linkedlistlist = t as linkedlist; if ( t != null)
二、繼承
1、定義
public class baseclass
public class subclass:baseclass
public class subclass:baseclass
2、子類繼承父類時,必須把約束放到子類的後面
public class baseclasswhere t :isomeinte***ce
public class subclass:baseclasswhere t :isomeinte***ce
三、泛型不支援+ , +=,因為沒有辦法加運算子約束。解決方法:使用泛型抽象類和泛型介面。
1、泛型抽象類
public abstract class baseclass
public abstract t add( t arg1 , t arg2 );
public class subclass :baseclass
public override int add( int arg1 , int arg2 );
return arg1 + arg2 ;
2、泛型介面同上,就不寫了。
四、泛型方法,例項方法和靜態方法都是一樣的,可以單獨給泛型方法引數。特性類不能用泛型。
1、定義
public class myclass
public void mymethod(x x)
public class myclass2
public void mymethod(t t)
public t mymethod2()
2、使用
myclass2 myclass = new myclass2 ();
myclass .mymethod(3);
myclass .mymethod(3);//可以省略
myclass .mymethod2();//不能編譯
3、可以使用約束,但是子類的複寫方法不能再加約束。
五、泛型委託和事件
1、定義
public class myclass
public delegate void gendelegate(t t );
public void somemethod(t t);
2、實現
myclassobj = new myclass;
myclass.gendelegate() del; //委託居然是用類引用的,很意外啊。
del = new myclass.gendelegate(obj.somemethod);
del = obj.somemethod; //也可以
del(3);
3、也可以用約束。
六、反射,也可以使用typeof , gettype()。
1、還可以用typeof(myclass<>)表示空的,多個的話用linkedlist<,>。
type 類中有些比較重要的方法:
type getgenericarguments();//泛型的引數資訊
type getgenericparameterconstraints();//泛型的約束
type getgenericdefinition();//泛型的定義資訊
bool isgenerictype();//是不是泛型型別
2、methodinfo和methodbase
methodinfo.invoke( list , args);
七、泛型集合,定義了多個泛型的類和介面。
八、不能在webservice使用泛型,不能在com使用泛型。
c 2 0的新功能 一 泛型類
一 定義 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...
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.使用泛型的...