Partager via


Erreur du compilateur CS0304

Mise à jour : novembre 2007

Message d'erreur

Impossible de créer une instance du type de variable 'type', car il n'a pas de contrainte new()
Cannot create an instance of the variable type 'type' because it does not have the new() constraint

Cette erreur se produit si vous utilisez new pour créer une instance d'une variable de type lorsque cette dernière ne spécifie pas la contrainte new(). Vous ne pouvez pas utiliser new pour appeler directement le constructeur pour un type inconnu à moins que la contrainte new() ne soit utilisée pour garantir l'existence d'un constructeur par défaut. Si vous ne pouvez pas utiliser la contrainte new, utilisez une expression typeof pour accéder au constructeur souhaité.

L'exemple suivant génère l'erreur CS0304 :

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

L'instruction new de ce formulaire n'est pas non plus autorisée dans les méthodes de classe :

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