Il parametro di tipo '<nomeparametrotipo1>' deve contenere un vincolo 'New' o 'Structure' per soddisfare il vincolo 'New' per il parametro di tipo '<nomeparametrotipo2>'

Aggiornamento: novembre 2007

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

Un tipo generico viene costruito in un'istruzione passando un parametro di tipo non vincolato per soddisfare un vincolo New.

Il vincolo New indica che l'argomento di tipo fornito a quel parametro di tipo deve esporre un costruttore privo di parametri accessibile al codice che crea gli oggetti da esso. Tutti i tipi di valori contengono costruttori privi di parametri, ma non tutti i tipi di riferimento li hanno. Pertanto il vincolo Structure soddisfa il vincolo New mentre il vincolo Class o una classe o nome di interfaccia no.

Le istruzioni seguenti possono generare questo errore.

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

Quando la classe c2 crea un oggetto da c1, il parametro di tipo u non soddisfa il vincolo New sul parametro di tipo t.

ID errore: BC32084

Per correggere l'errore

  • Se il parametro di tipo da passare al tipo generico è in grado di soddisfare il vincolo Structure o New, aggiungere il vincolo appropriato alla sua definizione.

    Public Class c2(Of u As Structure)
    
  • Se il parametro di tipo non è in grado di soddisfare il vincolo Structure o New, non passarlo al tipo generico. È necessario passare qualcos'altro come argomento di tipo.

Vedere anche

Concetti

Tipi generici in Visual Basic

Tipi valore e tipi riferimento

Riferimenti

New (Visual Basic)

Structure (Visual Basic)

Class (Visual Basic)