C#创建泛型类T的实例的三种方法
2024-09-02 22:41:50
原文链接: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{ }
最新文章
- Intro to CSS 3D transforms
- iOS改变字母的大小写
- [ruby on rails] 跟我学之(2)HelloWorld
- HTML 中 META的作用
- 解决spawn-fcgi child exited with: 1
- 系统使用 aspose.cell , 使得ashx第一次访问会变很慢
- (转)搜索Maven仓库 获取 groupid artifactId
- for()循环
- Android系统环境变量配置
- 帝国cms中上一篇与下一篇个性化灵动标签调出
- PHP中使用CURL(三)
- 4、ABPZero系列教程之拼多多卖家工具 集成短信发送模块
- [Codeforces 864C]Bus
- SpringMVC常用配置(二),最简洁的配置实现文件上传
- HTML5 CSS3 诱人的实例 :canvas 模拟实现电子彩票刮刮乐
- 【翻译】asp.net core中使用MediatR
- iOS 上架注意
- URI/URL/URN的联系和区别
- Python中的yield生成器的简单介绍
- java30