一、.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()约束实例
[csharp] view plain copy public class A<T> where :class,new() { public void Func() { T t=new T(); } }
四、泛型中new()约束的注意事项
1、泛型定义中有new()约束关键字时,表示必须有一个公共的无参的构造函数。简单点说就是你传递一个类代替T的时候,这个类必须有一个构造函数,且必须是公共的无参的。
2、当有多个约束时候,new()关键字必须放到坐后面。
3、在使用new()约束时,可以通过调用该无参构造函数来创建对象。
五、多个泛型类型参数
对于多个类型参数,每个类型参数都使用一个 where 子句
class Dictionary<TKey, TVal> where TKey : IComparable, IEnumerable,new() where TVal : IMyInterface,new() { public void Add(TKey key, TVal val) { } }
本文转载自 泛型中new()约束 http://www.studyofnet.com/news/988.html