c 2 0的新功能 二 泛型的其他的一些資訊

2021-04-12 17:23:08 字數 2162 閱讀 6531

一、泛型的轉換

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.使用泛型的...