Inferenza dell'argomento di tipo non riuscita per il parametro di tipo '<nomeparametrotipo>' di '<firmaroutinegenerica>'

Aggiornamento: novembre 2007

Messaggio di errore

Inferenza dell'argomento di tipo non riuscita per il parametro di tipo '<nomeparametrotipo>' di '<firmaroutinegenerica>'. Non è stato possibile dedurre l'argomento di tipo dall'argomento passato al parametro '<nomeparametrotipo>'.
Type argument inference failed for type parameter '<typeparametername>' of '<genericproceduresignature>'. Type argument could not be inferred from the argument passed to parameter '<parametername>'.

Viene chiamata una routine generica senza fornire argomenti di tipo e il compilatore non è in grado di dedurre il tipo da passare a uno dei parametri.

Generalmente, quando si chiama una routine generica, si fornisce un argomento di tipo per ogni parametro di tipo definito dalla routine generica. Se non viene fornito alcun argomento di tipo, il compilatore cercherà di dedurre i tipi da passare ai parametri di tipo. Se nel contesto della chiamata vengono fornite informazioni conflittuali del tipo di dati di un parametro di tipo, l'inferenza del tipo avrà esito negativo.

Il seguente codice di esempio può generare questo errore.

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

Nell'esempio descritto in precedenza, il tipo Integer per t viene dedotto dal compilatore in base a un valore di 42 passato a arg2. L'inferenza tuttavia richiederà che arg1 sia di tipo Integer(), vale a dire una matrice di Integer e che il valore 6 passato a arg1 non corrisponda a quel tipo.

ID errore: BC32051

Per correggere l'errore

  • Fornire gli argomenti di tipo alla procedura generica in modo tale che il compilatore non sia costretto a dedurli.

  • Fornire argomenti normali con tipi corrispondenti a quelli degli argomenti di tipo.

Vedere anche

Concetti

Tipi generici in Visual Basic

Routine generiche in Visual Basic

Riferimenti

Elenco dei tipi