Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Falha na inferência do argumento de tipo para o parâmetro de tipo '<typeparametername1>' de '<genericproceduresignature>'. O argumento Type inferido do argumento passado para o parâmetro '<parametername1>' entra em conflito com o argumento type inferido do argumento passado para o parâmetro '<parametername2>'.
Um procedimento genérico é chamado sem argumentos de tipo, e a tentativa de inferência de tipo produziu um conflito de tipo de dados entre os parâmetros de tipo.
Normalmente, quando você chama um procedimento genérico, você fornece um argumento type para cada parâmetro de tipo que o procedimento genérico define. Se você não fornecer nenhum argumento de tipo, o compilador tentará inferir os tipos a serem passados para os parâmetros de tipo. Se o contexto da chamada fornecer informações de tipo de dados conflitantes para um parâmetro type, a inferência de tipo falhará.
O código a seguir pode gerar esse erro.
Public Sub takeTwoValues(Of t)(ByVal x As t, ByVal y As t)
End Sub
Call takeTwoValues(4, 2.5)
Como o primeiro argumento faz com que o compilador infera Integer para o parâmetro ttype , enquanto o segundo argumento faz com que ele infera Double para o mesmo parâmetro type, há um conflito em relação a qual tipo de dados passar para t.
ID de erro: BC32116
Para corrigir este erro
Forneça argumentos de tipo para o tipo genérico, para que o compilador não precise inferi-los.
Call takeTwoValues(Of Double)(4, 2.5)Observe que, nesse caso, onde os dois argumentos normais são de tipos de dados diferentes, o código de chamada deve passar um argumento de tipo que possa acomodar ambos os tipos de dados. Neste caso,
Integeramplia paraDouble.-or-
Redefina o procedimento genérico para especificar parâmetros de tipo diferentes para os parâmetros normais, para que não haja conflito inferindo os tipos.
Public Sub takeTwoValues(Of t1, t2)(ByVal x As t1, ByVal y As t2)