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