Freigeben über


Der <Typparametername1>-Typparameter muss entweder eine New-Einschränkung oder eine Structure-Einschränkung haben, um der New-Einschränkung für den <Typparametername2>-Typparameter zu entsprechen

Aktualisiert: November 2007

Type parameter '<typeparametername1>' must have either a 'New' constraint or a 'Structure' constraint to satisfy the 'New' constraint for type parameter '<typeparametername2>'

Eine Anweisung erstellt einen generischen Typ, der einen Typparameter übergibt, der die Bedingungen der New-Einschränkung nicht erfüllt.

Die New-Einschränkung bedeutet, dass das für den Typparameter angegebene Typargument einen parameterlosen Konstruktor für den Zugriff durch den Code verfügbar machen muss, der Objekte anhand dieses Konstruktors erstellt. Alle Werttypen verfügen über parameterlose Konstruktoren, jedoch nicht alle Verweistypen. Daher erfüllt die Structure-Einschränkung die New-Einschränkung, die Class-Einschränkung oder ein Klassen- bzw. Schnittstellenname erfüllt sie jedoch nicht.

Dieser Fehler kann durch die folgenden Anweisungen generiert werden.

Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
    Public testObject As New c1(Of u)
End Class

Wenn Klasse c2 ein Objekt von c1 erstellt, erfüllt Typparameter u nicht die New-Einschränkung für Typparameter t.

Fehler-ID: BC32084

So beheben Sie diesen Fehler

  • Wenn der an den generischen Typ zu übergebende Typparameter die Structure-Einschränkung oder die New-Einschränkung erfüllen kann, fügen Sie seiner Definition die entsprechende Einschränkung hinzu.

    Public Class c2(Of u As Structure)
    
  • Wenn der Typparameter die Structure-Einschränkung oder die New-Einschränkung nicht erfüllen kann, übergeben Sie ihn nicht an den generischen Typ. Sie müssen ein anderes Element als Typargument übergeben.

Siehe auch

Konzepte

Generische Typen in Visual Basic

Wert- und Verweistypen

Referenz

New (Visual Basic)

Structure (Visual Basic)

Class (Visual Basic)