一、泛型的约束有
T:struct 封闭的类型为值类型
T:class 封闭的类型为引用类型
T:IInterfaceName 封闭的类型必须实现接口IInterfaceName
T:className 封闭的类型必须是className类或其子类
T:new() 封闭的类型必须带有无参的构造方法
T:U T的约束继承于U
使用的方法
where T:struct,class 封闭的类型为值类型且为引用类型,不存在会报错
所以约定如果有struct 或者class 必须在所有约束前面
所以struct或者class只会出现一种
其中的关系为与的关系,就是约束中的条件必须全部满足
Demo:DisposableList类 重新实现List 并且where T:class,IDisposable
class DisposableList<T>
where T : class, IDisposable {
//存储数据用的List
private List<T> _items = new List<T>();
//实现索引器
public T this[int index]
{
set
{
_items[index] = value;
}
get
{
return _items[index];
}
}
//实现Add
public void Add(T value) => _items.Add(value);
//实现delete,释放value
public void Delete(T item) => item.