我有以下问题:
class Request<T>
{
private T sw;
public Request()
{
//How can i create here the instance like
sw = new T();
}
}
是否可以这样做?
答案 0 :(得分:7)
添加new约束:
class Request<T> where T : new() {
private T sw;
public void Request() {
sw = new T();
}
}
这告诉编译器T
将始终具有可访问的无参数构造函数(不,您不能指定任何其他类型的构造函数)。
答案 1 :(得分:5)
您需要在类声明中声明约束where T : new()
。这会将T
限制为具有公共默认构造函数的类型。例如:
class Request<T> where T : new()
{
private T sw;
public Request()
{
sw = new T();
}
}
答案 2 :(得分:5)
您需要告诉编译器T总是实现无参数构造函数。
class Request<T> where T : new()