1. 程式人生 > >C#的泛型約束-

C#的泛型約束-

`class b
{

}
class c
{
public c(string s)
{

}
public void hello<T>(T t) where T: new()
{ 
}

}
class a where T:class
{
public T x;
}
public class FanxingClient : MonoBehaviour {

void Start () {
    a<c> abc = new a<c>();
    abc.x.hello<b>(new b());

    a<c> abc2 = new a<c>();
    abc2.x = new c("");
}`

記一下筆記今天學習了下 C#中的泛型約束 對類的約束和對方法的約束
類的約束:

class a where T:class
{
public T x;
}

限制泛型類的T型別只能為引用型別,還可以用struct, 限制為值型別也可以直接用int,float等關鍵字.
方法的約束:

public void hello<T>(T t) where T: Struct
    { 
    }

和類的約束類似,只是還可以進行引數的約束

public void hello<T>(T t) where T: new()
    { 
    }

限制只能用無參的構造方法
注:自己的一些理解,不對的地方,歡迎指出來~~~