.NET支持的类型参数约束有以下五种:
where T : struct | T必须是一个结构类型
where T : class | T必须是一个Class类型
where T : new() | T必须要有一个无参构造函数
where T : NameOfBaseClass | T必须继承名为NameOfBaseClass的类
where T : NameOfInterface | T必须实现名为NameOfInterface的接口
如:窗体单例的封装
public static class Singleton<T> where T:Form,new()
{
private static T _instance;
private static readonly object syslock = new object();
public static T getInstance()
{ //线程安全锁
if (_instance == null || _instance.IsDisposed)
{
lock (syslock)
{
if (_instance == null || _instance.IsDisposed)
{
_instance = new T();
}
}
}
return _instance;
}
}