new()约束对类定义有什么作用?
我看到了这个代码示例,并想知道new()
约束的目的是什么:
public class Client : IClient where T : IClientFactory, new() { public Client(int UserID){ } }
这被称为“’新’约束”。 这是关于它的文档 。
新约束指定generics类声明中的任何类型参数都必须具有公共无参数构造函数 。 要使用新约束,类型不能是抽象的。
(强调我的)
基本上,只要你在类中的某个地方创建一个新T
,就需要它,以确保你只能传入编译器可以创建新实例的东西。
Client
是T
对象的集合,这些T
对象必须实现IClientFactory
接口并具有公共无参数构造函数。
new()意味着
type参数必须具有公共无参数构造函数。 与其他约束一起使用时,必须最后指定new()约束。
MSDN上的参考通用约束