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

Ian*_*ien 4 c# oop polymorphism inheritance class

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

public class Client<T> : IClient where T : IClientFactory, new()
{
    public Client(int UserID){ }
}
Run Code Online (Sandbox Code Playgroud)

Bob*_*son 7

这被称为"'新'约束". 这是关于它的文档.

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

(强调我的)

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