C# - Abstract类扩展了class和new()?

Viv*_*ndi 3 c#

在一些现有的代码中,我看到以下内容:

public abstract class BasicComponent<T> : IBasicComponent<T> 
                                          where T : class, new()
Run Code Online (Sandbox Code Playgroud)

我知道抽象类是什么,以及接口.但究竟是什么做用where T,当你伸出什么happends classnew()

Ode*_*ded 11

这些是通用类型约束.

class该手段T使用必须是一个类(包括接口,委托和数组)的new,它必须有一个公共的无参数构造函数.

从链接的MSDN文档:

其中T:class - type参数必须是引用类型; 这也适用于任何类,接口,委托或数组类型.

其中T:new() - 类型参数必须具有公共无参数构造函数.与其他约束一起使用时,必须最后指定new()约束.