C#对泛型实例化对像的方法
最近在搞一个小东东,用到了泛型的处理,用到了对泛型的实例化问题。下面来讲讲对泛型的实例化,以代码为例,如:
public class A
{ } public class B<T>
{
public static T Get()
{ //在这一块如何实例化T这个对象呢?如果用default(T)这个是不行的。只能做一个null值处理。 } }
以上的方法就是遇到最麻烦的问题。一直以来都以为default(T)就可以实例化T这个对像,其实不然,这个只能起一个null值的作用。如果要解决以上的问题现在有两种方法:
一、在使用泛型的类后面加入一个 where T : new(),代码如下:
public class A
{
} public class B<T> where T : new()
{
public static T Get()
{
T result = new T();//这样就可以实例化。也可以编译通过。 ...........
} }
对于new()约束,大家可能有一个误解,以为使用了new约束之后,在创建对象时与非泛型的版本是一致的。事实上,使用new关键字的作用只是让编译器在泛型实例化之处,检查所绑定的泛型参数是否具有无参构造函数,也可以实例化出来一个对象。
二、可以使用System.Activator.CreateInstance<T>()创建泛型实例对像。代码如下:
public class A
{
} public class B<T>
{
public static T Get()
{
T s = System.Activator.CreateInstance<T>(); ..... } }
上面所讲的两种方式都是以用反射机制来获取泛型对象的实例的。
C#对泛型实例化对像的方法的更多相关文章
- 对C#泛型实例化对像
		
public class A { } public class B<T> { public static T Get() { //在这一块如何实例化T这个对象呢?如果用default(T) ...
 - 对C#泛型实例化对像--转
		
最近在编写一套开发框架结构主要应用.Net 3.5以上的框架开发与应用.在此框架中应用了较多的泛型.下面来讲讲对泛型的实例化,以代码为例,如: public class A { } public cl ...
 - java泛型应用实例 - 自定义泛型类,方法
		
近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...
 - C++类的实例化的两种方法
		
C++ 类的实例化有两种方法: 直接定义对象: 先定义一个类: class A { public: A(); virtual ~A(); ... ... }; 类实现略. 用的时候: A a; ...
 - Spring中利用applicationContext.xml文件实例化对象和调用方法
		
Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...
 - 17-EasyNetQ:非泛型的发布&订阅扩展方法
		
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x =&g ...
 - EasyNetQ使用(九)【非泛型的发布&订阅扩展方法,发生错误的情况 】
		
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x =&g ...
 - C#中通过类来继承两个接口,父类实例化接口中的方法,子类继承父类,调用方法
		
实现了父类继承接口,父类实例化接口的方法,子类继承父类,子类调用父类的方法直接使用 代码如下: using System; using System.Collections.Generic; usin ...
 - Gson通过借助TypeToken获取泛型参数的类型的方法
		
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
 
随机推荐
- Andrew Ng机器学习 一: Linear Regression
			
一:单变量线性回归(Linear regression with one variable) 背景:在某城市开办饭馆,我们有这样的数据集ex1data1.txt,第一列代表某个城市的人口,第二列代表在 ...
 - Linux/Raspbian 每个目录用途说明
			
本文转自无聊小博,很多刚接触树莓派/Linux 的同学会在给树莓派安装.卸载.配置软件时,软件和配置文件等存放在哪儿产生疑惑.也会遇到诸如“磁盘分区”.U盘挂载等涉及到的目录路径问题.Linux 的目 ...
 - WM_MOUSEWHEEL、WM_LBUTTONDOWN等父子窗口消息传递陷阱
			
mfc中,碰到以下问题:父对话框A.子窗口B.B是CWnd对象.需要在B中处理WM_MOUSEWHEEL.WM_LBUTTONDOWN等消息. 所以在B中增加对应的消息处理,发现B中的消息循环中,收不 ...
 - 项目Alpha冲刺(团队)-第九天冲刺
			
格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队) 团队名称:为了交项目干杯 作业目标:描述第九天冲刺的项目进展.问题困难.心得体会 队员姓名与学号 队员学号 ...
 - oracle  游标使用详解
			
-- 声明游标:CURSOR cursor_name IS select_statement--For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标decla ...
 - ASP.net MVC  C# 当前上下文中不存在名称"viewbag"
			
出现的错误如下: 错误 2 当前上下文中不存在名称“model” e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtm ...
 - C# 监控网速
			
主要有两个类,其一是NetworkAdapter,该类的作用是获取本机网络适配器列表,并且可以通过该类的属性获取当前网速数据:其二是NetworkMonitor,该类是通过.NET的Performan ...
 - 使用jmx-exporter&&jmxtrans && nexus jmx 暴露nexus 系统指标信息
			
以下演示一个简单的使用jmxexporter 暴露nexus jmx 指标为prometheus metrics,同时也集成了一个简单的jmxtrans 输出数据到 graphite 环境准备 doc ...
 - jaeger使用yugabyte作为后端存储的尝试以及几个问题
			
前边写过使用scylladb 做为jaeger 的后端存储,还是一个不错选择的包括性能以及 兼容性,对于 yugabyte 当前存在兼容性的问题,需要版本的支持,或者尝试进行一些变动 create 语 ...
 - java web项目改装exe安装版
			
https://blog.csdn.net/rico_zhou/article/details/79868129java简单程序打包成exe https://blog.csdn.net/rico_zh ...