C# 新实例的泛型类型实现了什么?
我注意到有人在C#中这样做了-注意新的()C# 新实例的泛型类型实现了什么?,c#,.net,generics,C#,.net,Generics,我注意到有人在C#中这样做了-注意新的() 公共类MyClass,其中T:new(){ //等 } 这能实现什么 这意味着T必须有一个公共的无参数构造函数。例如(在MSDN之外),必须可以创建以下新的T对象: class ItemFactory<T> where T : new() { public T GetNewItem() { return new T(); } } 类ItemFactory,其中T:new() { 公共T GetNe
公共类MyClass,其中T:new(){
//等
}
这能实现什么 这意味着T必须有一个公共的无参数构造函数。例如(在MSDN之外),必须可以创建以下新的T对象:
class ItemFactory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
类ItemFactory,其中T:new()
{
公共T GetNewItem()
{
返回新的T();
}
}
有关更多信息,请参阅MSDN中的。这将限制泛型
MyClass
仅适用于具有可用无参数构造函数的T
实例。这允许您在类型中安全地使用以下表达式
new T()
如果没有
new
约束,这是不允许的,因为CLR无法验证类型t
是否具有适用的构造函数。它允许您键入:
T obj = new T();
这将在没有
new()
子句的情况下生成编译器错误。。这对我的帮助比我想象的要多
T obj = new T();