泛型后面跟着where是干嘛的呢?
class A<T> where T:new()
这是类型参数约束,where表名了对类型变量T的约束关系。
where T:A 表示类型变量是继承于A的,或者是A本省。where T: new()指明了创建T的实例应该使用的构造函数。
.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的接口 |
多个约束可以使用逗号(,)分割比如
class A<T> where T:new(),IEntity
1限定泛型类必须有无参数构造函数
2实现名为IEntity的接口