Il parametro di tipo '<typeparametername1>' deve avere un vincolo 'New' o un vincolo 'Structure' per soddisfare il vincolo 'New' per il parametro di tipo '<typeparametername2>'

Un'istruzione crea un tipo generico che passa un parametro di tipo che non è vincolato per soddisfare un vincolo New .

Il vincolo New indica che l'argomento di tipo fornito a tale parametro di tipo deve esporre un costruttore senza parametri accessibile al codice che crea oggetti in base ad esso. Tutti i tipi valore hanno costruttori senza parametri, ma non tutti i tipi riferimento li hanno. Di conseguenza il vincolo Structure soddisfa il vincolo New , ma il vincolo Class o un nome della classe o interfaccia, non lo soddisfa.

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 in base a c1, il parametro di tipo u non soddisfa il vincolo di New sul parametro di tipo t.

ID errore: BC32084

Per correggere l'errore

  • Se il parametro di tipo che deve essere passato al tipo generico può soddisfare il vincolo Structure o New , aggiungere il vincolo appropriato alla relativa definizione.

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

Vedi anche