1. 程式人生 > 實用技巧 >C#建立泛型類T的例項的三種方法

C#建立泛型類T的例項的三種方法

最近在學歷基類的寫法時,遇到了一個問題:如何怎麼建立一個泛型類T的例項呢?

廢話不多說了,直接上程式碼吧,目前發現三種方法,先貼上,以後再總結,希望能幫助跟我遇到同樣問題的朋友。

方法一,通過外部方法傳入的例項來例項化:

//泛型類:
public class MySQLHelp<T>
{
       private T t;
       public MySQLHelp(T t)
        {
            this.t = t;
        }    
}

//測試類
public class Test{
     public static void Main(){
               MySQLHelp<Message> mm = new MySQLHelp<Message>(new Message());
     }
}
//其他類
public class Message{

}

方法二,通過限制泛型類的建構函式:

限制泛型類必須帶有無參構造方法:public class MySQLHelp<T> where T:new()

//泛型類:
public class MySQLHelp<T> where T:new()
{
       private T t=new T();
       public MySQLHelp()
        {
        }    
}

//測試類
public class Test{
     public static void Main(){
               MySQLHelp<Message> mm = new MySQLHelp<Message>();
     }
}
//其他類
public class Message{

}

方法三,利用微軟提供的方法:

利用微軟的類:System.Activator(包含建立本地或遠端物件型別的方法或獲取引用的方法,翻譯名:活化劑類)

建立指定泛型型別引數指定的型別的例項:System.Activator.CreateInstance<T>()
//泛型類:
public class MySQLHelp<T>
{
       //建立指定泛型型別引數指定的型別的例項(使用這種方法可以不對泛型型別T做限制,即不用新增:where T:new())
        private T t = System.Activator.CreateInstance<T>();
       public MySQLHelp()
        {
        }    
}

//測試類
public class Test{
     public static void Main(){
               MySQLHelp<Message> mm = new MySQLHelp<Message>();
     }
}
//其他類
public class Message{

}