编译器错误 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
}
}