C#创建泛型类T的实例的三种方法
原文链接:https://www.cnblogs.com/lxhbky/p/6020612.html
方法一,通过外部方法传入的实例来实例化:
//泛型类: 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{ }