Freigeben über


Compilerfehler CS0304

Aktualisiert: November 2007

Fehlermeldung

Es kann keine Instanz des Variablentyps "Typ" erstellt werden, weil er keine new()-Einschränkung aufweist
Cannot create an instance of the variable type 'type' because it does not have the new() constraint

Dieser Fehler tritt auf, wenn Sie mithilfe von new eine Instanz einer Typvariablen erstellen und die betreffende Typvariable nicht die new()-Einschränkung festlegt. Der Konstruktor für einen unbekannten Typ kann mit new nicht direkt aufgerufen werden, es sei denn, die new()-Einschränkung wird verwendet, um das Vorhandensein eines Standardkonstruktors zu gewährleisten. Wenn Sie die new-Einschränkung nicht verwenden können, versuchen Sie, mithilfe des typeof-Ausdrucks auf den gewünschten Konstruktor zuzugreifen.

Im folgenden Beispiel wird der Fehler CS0304 generiert:

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

Die new-Anweisung dieses Formats ist in Klassenmethoden ebenfalls nicht zugelassen:

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