コンパイラ エラー CS0304

更新 : 2007 年 11 月

エラー メッセージ

変数型 '型' のインスタンスは、new() 制約を含まないため、作成できません

このエラーは、new を使用して型変数のインスタンスを作成するとき、型変数に new() 制約が指定されていない場合に発生します。既定のコンストラクタの存在が 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
   }
}