Partilhar via


Parâmetro de tipo '<typeparametername1>' deve ter uma restrição 'New' ou uma restrição 'Structure' para satisfazer a restrição 'New' para parâmetro do tipo '< typeparametername2 >'

Uma instrução constrói um tipo genérico passando um parâmetro de tipo que não é restrito para satisfazer uma restrição New.

A restrição New significa que o argumento de tipo fornecido para que parâmetro do tipo deve expor um construtor sem parâmetros acessível para o código que cria objetos a partir dele.Todos os tipos de valor possuem construtores sem parâmetros, mas nem todos os tipos de referência fazem.Portanto, a Structure as restrições atendem a New restrição, mas o Class restrição ou um nome de classe ou interface, não.

A seguinte declaração pode gerar esse erro.

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

Quando a classe c2 cria um objeto de c1, o parâmetro do tipo u não satisfaz a restrição New no parâmetro do tipo t.

ID de erro: BC32084

Para corrigir este erro

  • Se o parâmetro do tipo a ser passado para o tipo genérico pode satisfazer a restrição Structure ou New, então adicione a restrição apropriada a sua definição.

    Public Class c2(Of u As Structure)
    
  • Se o parâmetro do tipo não puder atender a restrição Structure ou New, então, não o passe para o tipo genérico.Você deve passar algo como o argumento do tipo.

Consulte também

Conceitos

Tipos genéricos no Visual Basic

Tipos de valores e tipos de referências

Referência

Novo (Visual Basic)

Estrutura (Visual Basic)

Classe (Visual Basic)