Error del compilador CS0304

Actualización: noviembre 2007

Mensaje de error

No se puede crear ninguna instancia del tipo de variable 'tipo' porque no tiene la restricción new()
Cannot create an instance of the variable type 'type' because it does not have the new() constraint

Este error se produce si se utiliza new para crear una instancia de una variable de tipo y esa variable de tipo no especifica la restricción new(). No se puede utilizar new para invocar directamente el constructor de un tipo desconocido, a menos que se utilice la restricción new() para garantizar la existencia de un constructor predeterminado. Si no puede utilizar la restricción new, considere la posibilidad de utilizar una expresión typeof para tener acceso al constructor deseado.

El código siguiente genera el error CS0304:

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

La instrucción new de este formulario tampoco se permite en los métodos de clase:

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