编译器错误 CS0304

更新:2007 年 11 月

错误消息

变量类型“type”没有 new() 约束,因此无法创建该类型的实例

当您使用 new 创建某个类型变量的实例时,如果该类型变量未指定 new() constraint,则会发生此错误。除非使用 new() 约束确保存在默认的构造函数,否则不能使用 new 直接调用未知类型的构造函数。如果无法使用 new 约束,可考虑使用 typeof 表达式访问所需的构造函数。

下面的示例生成 CS0304:

// CS0304.cs
// compile with: /target:library
class C<T>
{
   T t = new T();   // CS0304
}

类方法中同样不允许这种形式的 new 语句:

// CS0304_2.cs
// compile with: /target:library
class C<T>
{
   public void f()
   {
      T t = new T();  // CS0304
   }
}