O parâmetro de tipo '<typeparametername>' para '<genericprocedurename>' não pode ser inferido
Um procedimento genérico é chamado sem fornecer uma lista de argumentos de tipo e a inferência de tipos falha para um dos argumentos de tipo.
Quando você chama um procedimento genérico, normalmente fornece um argumento de tipo para cada parâmetro de tipo definido pelo procedimento. No entanto, você tem a alternativa de omitir totalmente a lista de argumentos de tipo. Quando você faz isso, o compilador tenta inferir o tipo de cada argumento de tipo do contexto da sua chamada. Para obter mais informações, confira "Inferência de tipos" em Procedimentos genéricos no Visual Basic.
Uma possível causa de falha de inferência de tipo é uma incompatibilidade de classificação entre um parâmetro de tipo e o tipo de chamada. O código a seguir ilustra isso.
Public Sub displayLargest(Of t As IComparable)(ByVal arg() As t)
' Insert code to find and display the largest element of arg().
End Sub
Public Sub callGenericSub()
Dim testValue As Integer
findLargest(testValue)
Dim testMatrix(,) As Integer
findLargest(testMatrix)
End Sub
No código anterior, as duas chamadas para findLargest
produzem esse erro, porque o parâmetro de tipo t
chama uma matriz unidimensional, enquanto os argumentos de tipo que o compilador infere das chamadas são um escalar (testValue
) e uma matriz bidimensional (testMatrix
).
ID do erro: BC32050
Para corrigir este erro
Verifique se os tipos dos argumentos normais são tais que a inferência de tipo seja consistente com os parâmetros de tipo declarados para o procedimento genérico.
-ou-
Chame o procedimento genérico com uma lista completa de argumentos de tipo, de modo que a inferência de tipo não seja necessária.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de