Partager via


Le paramètre de type '<NomParamètreDeType1>' doit avoir une contrainte 'New' ou une contrainte 'Structure' pour satisfaire la contrainte 'New' pour le paramètre de type '<NomParamètreDeType2>'

Mise à jour : novembre 2007

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

Une instruction construit un type générique en passant un paramètre de type qui n'est pas contraint pour satisfaire une contrainte New.

La contrainte New signifie que l'argument de type fourni à ce paramètre de type doit exposer un constructeur sans paramètre accessible au code qui crée des objets à partir de celui-ci. Tous les types valeur ont des constructeurs sans paramètres, mais pas tous les types référence. Par conséquent, la contrainte Structure satisfait la contrainte New, mais pas la contrainte Class, ou un nom de classe ou d'interface.

Les instructions suivantes peuvent générer ce message d'erreur.

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

Lorsque la classe c2 crée un objet de c1, le paramètre de type u ne satisfait pas la contrainte New sur le paramètre de type t.

ID d'erreur : BC32084

Pour corriger cette erreur

  • Si le paramètre de type à passer au type générique peut satisfaire la contrainte Structure ou New, ajoutez la contrainte appropriée à sa définition.

    Public Class c2(Of u As Structure)
    
  • Si le paramètre de type ne peut pas satisfaire la contrainte Structure ou New, ne le passez pas au type générique. Vous devez passer un autre élément comme argument de type.

Voir aussi

Concepts

Types génériques en Visual Basic

Types valeur et types référence

Référence

New (Visual Basic)

Structure (Visual Basic)

Class (Visual Basic)