企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Compiler Error CS0304 变量类型“type”没有 new() 约束,因此无法创建该类型的实例 如果实现泛型类,并且需要使用 **new** 关键字来创建为类型参数 T 提供的任何类型的新实例,则必须在类声明中将 [new() 约束](https://msdn.microsoft.com/zh-cn/library/51y09td4.aspx)应用于 T,如下面的示例所示。 ``` class C<T> where T : new() ``` **new()** 约束将通过确保为 T 提供的任何具体类型都具有默认值(无参数构造函数)来实施类型安全。如果您在 T 未指定 **new()** 约束时尝试在类的正文中使用 **new** 运算符创建类型参数 T 的实例,将出现 CS0304。在客户端,如果代码尝试使用没有默认构造函数的类型实例化泛型类,则该代码将生成 [Compiler Error CS0310](https://msdn.microsoft.com/zh-cn/library/42h7h44y.aspx)。 下面的示例会生成 CS0304。 ``` // CS0304.cs // Compile with: /target:library. class C<T> { // The following line generates CS0304. T t = new T(); } ``` 该类的方法中也不允许使用 **new** 运算符。 ``` // Compile with: /target:library. class C<T> { public void ExampleMethod() { // The following line generates CS0304. T t = new T(); } } ``` 若要避免该错误,请使用 **new()** 约束声明类,如下面的示例所示。 ``` // Compile with: /target:library. class C<T> where T : new() { T t = new T(); public void ExampleMethod() { T t = new T(); } } ``` ## 请参阅 [C# Compiler Errors](https://msdn.microsoft.com/zh-cn/library/ms228296.aspx)