如何设置/创建Generics实例?

时间:2011-10-19 16:01:07

标签: c#

我有以下问题:

class Request<T>
{
    private T sw; 

    public Request()
    {
        //How can i create here the instance like
        sw = new T();
    }

}

是否可以这样做?

3 个答案:

答案 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();
    }
 }

更多信息:http://msdn.microsoft.com/en-us/library/d5x73970.aspx

答案 2 :(得分:5)

您需要告诉编译器T总是实现无参数构造函数。

class Request<T> where T : new()