C# new()while声明泛型类的目的是什么?

C# new()while声明泛型类的目的是什么?,c#,.net,generics,C#,.net,Generics,new()while声明BaseEntityCollection类的目的是什么? 如果我要删除它,我会在下面的消息中得到一个错误“T必须是具有公共无参数构造函数的非抽象类型,才能将其用作参数…” 公共抽象部分类BaseEntityCollection: 列出其中T:BaseEntity,new() 这意味着无论您为T指定什么类,它都有一个默认(无参数)构造函数 BaseEntityCollection<T> : List<T> 因此,在泛型类中,您可以执行newt(),

new()while声明BaseEntityCollection类的目的是什么?
如果我要删除它,我会在下面的消息中得到一个错误“T必须是具有公共无参数构造函数的非抽象类型,才能将其用作参数…”

公共抽象部分类BaseEntityCollection:
列出其中T:BaseEntity,new()

这意味着无论您为
T
指定什么类,它都有一个默认(无参数)构造函数

BaseEntityCollection<T> : List<T>

因此,在泛型类中,您可以执行
newt()
,它将创建类型为T的新对象。

类型
T
必须具有无参数构造函数。这使您能够通过执行
var t=new t()
来创建新实例,否则这是不可能的。

编写
new()
会强制参数具有默认构造函数

BaseEntityCollection<T> : List<T>
没有它,您就无法编写
newt()

尝试将非
new()
类型作为
new()
'd参数传递时,会发生错误


而且,.

相反,您应该继承,这是为继承而设计的。

它是通用约束的表示法:必须具有(公共)无参数构造函数

这是可以与泛型类型关联的可能的“泛型类型约束”之一。仅当泛型类型具有无参数构造函数时,使用约束“new()”才允许使用它。这对于序列化或工厂类型方法(需要创建T类型的对象)非常有用


下面是一些其他泛型类型约束:

这意味着您的泛型类型必须具有无参数构造函数

BaseEntityCollection<T> : List<T>
BaseEntityCollection:列表
我不知道你在这里干什么,但我认为这违反了利斯科夫的规则。检查您的层次结构


这是一个通用约束。在本例中,这是一个问题。

如果我要使用Collectiion,如何创建从collection继承的新collection对象?