Partilhar via


Inferência de argumento de tipo falhou para o parâmetro de tipo '<typeparametername>' do '<genericproceduresignature>'

Mensagem de erro

Inferência de argumento falhou para o parâmetro de tipo '<typeparametername>' de '<genericproceduresignature>'.Argumento de tipo não pode ser deduzido do argumento passado ao parâmetro '<parametername>'.

Um procedimento genérico é chamado sem fornecer quaisquer argumentos de tipo, e o compilador não pode inferir o tipo para passar para um dos parâmetros.

Normalmente, quando você invoca um procedimento genérico, você fornece um argumento de tipo para cada parâmetro de tipo que o procedimento genérico define.Se você não fornece nenhum argumento de tipo, o compilador procura inferir os tipos a serem passados para os parâmetros de tipo.Se o contexto da chamada fornece informações de tipo de dados conflitantes para o parâmetro de tipo, então a inferência de tipos fracassa.

O código a seguir pode gerar este tipo de erro.

Public Sub doSomething(Of t)(ByVal arg1 As t(), ByVal arg2 As t)
End Sub
Call doSomething(6, 42)

No exemplo anterior, o compilador inferirá tipo Integer para t com base no valor de 42 passado para arg2.No entanto, essa inferência exigiria que arg1 fosse do tipo Integer(), ou seja, uma matriz de Integer, e o valor 6 passado para arg1 não corresponde a esse tipo.

ID de erro: BC32051

Para corrigir este erro

  • Forneça os argumentos de tipo ao procedimento genérico, de modo que o compilador não precise inferi-los.

  • Fornecer argumentos normais com tipos que correspondam aos argumentos de tipo.

Consulte também

Conceitos

Tipos genéricos no Visual Basic

Procedimentos Genéricos em Visual Basic

Referência

Lista de tipos