【转】C#如何创建泛型类T的实例
原文地址:https://www.cnblogs.com/lxhbky/p/6020612.html
最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类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{ }
【转】C#如何创建泛型类T的实例的更多相关文章
- C#如何创建泛型类T的实例
最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类T的实例呢? 废话不多说了,直接上代码吧,目前发现三种方法,先贴上,以后再总结,希望能帮助跟我遇到同样问题的朋友. 方法一,通过外 ...
- C#创建泛型类T的实例的三种方法
原文链接:https://www.cnblogs.com/lxhbky/p/6020612.html 方法一,通过外部方法传入的实例来实例化: //泛型类: public class MySQLHel ...
- StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类
public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...
- 初学C#和MVC的一些心得,弯路,总结,还有教训(4)--Cache 关于创建多个缓存实例
asp.net中的数据缓存可以用 HttpRuntime.Cache ,这个是大家都知道的,但如果缓存的数据比较多,又比较杂乱,想要把缓存分开管理(也就是创建多个缓存实例)应该怎么做呢... 于是常规 ...
- PHPExcel创建文件格式写入对象实例
首先到http://www.codeplex.com/PHPExcel下载PHPExcel 下面就是php导出excel的程序 <?phpini_set("display_errors ...
- 李洪强iOS开发之OC[008] -创建一个对象并访问实例变量
// // main.m // 07 - 创建一个对象并且访问实例变量 // // Created by vic fan on 16/7/3. // Copyright © 2016年 李洪强 ...
- Java Servlet(十一):一个servlet被10个浏览器客户端访问时会创建几个servlet实例?
一般Servlet只初始化一次(只有一个实例).对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给该方法.如此重复以 ...
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解 本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...
随机推荐
- IO之4种字节流拷贝文件方式对比
public class CopyMp4Demo { public static void main(String[] args) throws IOException { long start = ...
- ubuntu下安装maven(转载)
下载maven http://maven.apache.org/download.cgi 解压 tar -xzvf apache-maven-3.0.5-bin.tar.gz 配置环境变量 sudo ...
- PHP代码不应有的坏习惯
>>使用echo取代print >>使用str_replace取代preg_replace, 除非你绝对需要 >>不要使用 short tag >>简单 ...
- Windows 8 Stroe Apps 控件
重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容 ...
- 使用bat批处理文件定时自动备份sqlserver数据库
一.创建一个sql文件,在里面写入以下代码: USE MasterGOdeclare @str varchar(100)set @str='D:\sqlserver14backup\CDB\'+rep ...
- Java 获取最近时间
public static String getStatetime() throws ParseException{ SimpleDateFormat sdf = new SimpleDateForm ...
- c#编程模仿的1stopt界面
* Levenberg-Marquardt法 (LM)+ 通用全局优化算法(Universal Global Optimization - UGO) * Quasi-Newton法 (BFGS)+ 通 ...
- Nodejs 传图片的两种方式
node上传图片第一种方式 1,首先引入模块 "connect-multiparty": "~1.2.5", 在package.json中添加 "co ...
- DDR4控制笔记
DDR4接口 A[17:0] input 为激活命令提 供行地址,为读.写命令地址输入:提供列地址,也为模式寄存器设 置提供操作码,A[16]只用于8Gb和16Gb,A[17]只用于16Gb,另外 ...
- GetWindowRect
示例代码: CRect rect; GetDlgItem(IDC_STATIC_VIEW)->GetWindowRect(&rect); int width=rect.Width(); ...