4

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

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

3 回答 3

7

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

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

(强调我的)

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

于 2012-12-10T18:14:13.527 回答
2

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

于 2012-12-10T18:14:21.827 回答
2

new() 表示

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

参考MSDN 上的通用约束

于 2012-12-10T18:15:20.143 回答