Non è possibile dedurre il parametro di tipo '<nomeparametroditipo>' per '<nomeroutinegenerica>'

È stata chiamata una routine generica senza fornire un elenco di argomenti di tipo e l'inferenza del tipo non riesce per uno degli argomenti di tipo.

Di norma, quando si chiama una routine generica, si fornisce un argomento di tipo per ogni parametro di tipo definito dalla routine. È però possibile omettere completamente l'elenco degli argomenti di tipo. In questo caso, il compilatore prova a dedurre il tipo di ogni argomento di tipo dal contesto della chiamata. Per altre informazioni, vedere "Inferenza di tipi" in Generic Procedures in Visual Basic.

Una delle possibili cause degli errore di inferenza del tipo è la mancata corrispondenza di dimensioni tra un parametro di tipo e il tipo chiamante. Il codice seguente illustra questo concetto.

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  

Nel codice precedente, le due chiamate a findLargest generano questo errore perché il parametro di tipo t richiede una matrice unidimensionale, mentre il compilatore deduce dalle chiamate che gli argomenti di tipo sono costituiti da una matrice scalare (testValue) e una matrice bidimensionale (testMatrix).

ID errore: BC32050

Per correggere l'errore

  • Verificare che i tipi degli argomenti normali siano tali che l'inferenza del tipo sia coerente con i parametri di tipo dichiarati per la routine generica.

    oppure

  • Chiamare la routine generica con un elenco completo di argomenti di tipo in modo da non rendere necessaria l'inferenza del tipo.

Vedi anche