声明泛型类时new()的目的是什么?

Ahm*_*med 8 .net c# generics

在声明BaseEntityCollection类时new()的目的是什么?
如果我要删除它,我收到一个错误,出现以下消息:"T必须是非抽象类型,带有公共无参数构造函数才能将其用作参数..."

public abstract partial class BaseEntityCollection<T> : 
       List<T> where T : BaseEntity, new()
Run Code Online (Sandbox Code Playgroud)

Dav*_*Yaw 20

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

因此,在泛型类中,您可以这样做new T(),它将创建一个类型为T的新对象.


SLa*_*aks 5

写入new()强制参数具有默认构造函数。

没有它,你就无法写作new T()
当您尝试将非类型new()作为new()'d 参数传递时,就会发生错误。


另外,不要继承List<T>
相反,您应该继承Collection<T>,它是为继承而设计的。