例如给你个简单例子 如果给0,则返回默认值,值类型和引用类型不同。反之返回新对象 public T GetValue<T>(int i) where T:new() { if(i == 0) return default(T); else return new T(); }调用为: Form result = GetValue<Form>(0);
where T: 泛型约束,约束类型T必须具有无参的构造函数 表示T必须是class类型或它的派生类。 new()构造函数约束允许开发人员实例化一个泛型类型的对象。 一般情况下,无法创建一个泛型类型参数的实例。然而,new()约束改变了这种情况,要求类型参数必须提供一个无参数的构造函数。 在使用new()约束时,可以通过调用该无参构造函数来创建对象。 基本形式: where T : new()
如果给0,则返回默认值,值类型和引用类型不同。反之返回新对象
public T GetValue<T>(int i) where T:new()
{
if(i == 0) return default(T);
else return new T();
}调用为:
Form result = GetValue<Form>(0);
泛型约束,约束类型T必须具有无参的构造函数
表示T必须是class类型或它的派生类。
new()构造函数约束允许开发人员实例化一个泛型类型的对象。
一般情况下,无法创建一个泛型类型参数的实例。然而,new()约束改变了这种情况,要求类型参数必须提供一个无参数的构造函数。
在使用new()约束时,可以通过调用该无参构造函数来创建对象。
基本形式: where T : new()