2011-10-19 72 views

回答

7

添加new约束:

class Request<T> where T : new() { 
    private T sw; 

    public void Request() { 
     sw = new T(); 
    } 
} 

这告诉编译器T将始终有一个可访问的无参数构造函数(不,你不能指定任何其他类型的构造函数)。

+0

感谢您的正确和快速的答案。 – Racooon

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

+0

谢谢,一个例子会非常有帮助。 – Racooon

+0

@VuralAcar - 没问题,用例子更新。 –

5

你需要告诉并不总会实现一个参数的构造函数,编译器。

class Request<T> where T : new() 
+0

“一个默认的构造函数” – BoltClock

+0

@BoltClock:一个无参数的构造函数也许?空的构造函数?这里最好的词是什么? – Jimmy