new()在下面的代码中做了什么?
public class A<T> where T : B, new()
Run Code Online (Sandbox Code Playgroud)
wom*_*omp 36
这是对类的泛型参数的约束,这意味着作为泛型类型传递的任何类型都必须具有无参数构造函数.
所以,
public class C : B
{
public C() {}
}
Run Code Online (Sandbox Code Playgroud)
将是一个有效的类型.您可以创建一个新的实例A<C>.
然而,
public class D : B
{
public D(int something) {}
}
Run Code Online (Sandbox Code Playgroud)
不会满足约束,你不会被允许创建一个新的实例A<D>.如果您还向D添加了无参数构造函数,那么它将再次有效.