new()约束对类定义有什么作用?

我看到了这个代码示例,并想知道new()约束的目的是什么:

 public class Client : IClient where T : IClientFactory, new() { public Client(int UserID){ } } 

这被称为“’新’约束”。 这是关于它的文档 。

新约束指定generics类声明中的任何类型参数都必须具有公共无参数构造函数 。 要使用新约束,类型不能是抽象的。

(强调我的)

基本上,只要你在类中的某个地方创建一个新T ,就需要它,以确保你只能传入编译器可以创建新实例的东西。

ClientT对象的集合,这些T对象必须实现IClientFactory接口并具有公共无参数构造函数。

new()意味着

type参数必须具有公共无参数构造函数。 与其他约束一起使用时,必须最后指定new()约束。

MSDN上的参考通用约束