泛型中new()约束
类别:编程学习 浏览量:241
时间:2015-7-23 泛型中new()约束
泛型中new()约束一、.NET中支持的类型参数约束有以下几种
where T : struct T必须是一个结构类型
where T : class T必须是一个类(class)类型,不能是结构(structure)类型
where T : new() T必须要有一个无参构造函数
where T : NameOfBaseClass T必须继承名为NameOfBaseClass的类
where T : NameOfInterface T必须实现名为NameOfInterface的接口
二、泛型中new()约束基本形式
class A<T> where T : new()
三、泛型中new()约束实例
public class A<T> where :class,new()
{
public void Func()
{
T t=new T();
}
}
//泛型类T的一个实现类Test
public class Test
{
public Test(int a)
{
}
}
此时不能编译通过
解决方案:在Test类中加入无参构造函数即可。
四、泛型中new()约束的注意事项
1、泛型定义中有new()约束关键字时,表示必须有一个公共的无参的构造函数。简单点说就是你传递一个类代替T的时候,这个类必须有一个构造函数,且必须是公共的无参的。
2、当有多个约束时候,new()关键字必须放到坐后面。
3、在使用new()约束时,可以通过调用该无参构造函数来创建对象。
class Dictionary<TKey, TVal>
where TKey : IComparable, IEnumerable,new()
where TVal : IMyInterface,new()
{
public void Add(TKey key, TVal val)
{
}
}
标签:泛型
热门推荐
- 结构、枚举和数组的区别
- css透明输入框(纯CSS实现气泡对话框尖角处理方案)
- <!DOCTYPE> 标签的介绍
- 数据库负载均衡的原理(理解web服务器和数据库的负载均衡以及反向代理)
- dedecms标签分类(dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章)
- MVC 使用FileResult导出文件
- apache的安装步骤(windows安装apache系统中无apache2服务解决方案)
- php如何定时执行某项(php解决crontab定时任务不能写入文件问题的方法分析)
- css中分割线的渐变效果(CSS学习笔记之可重复渐变repeating-linear-gradient)
- 如何调用dede标签(dedeCMS列表页调用tag的方法小结5.6/5.7)