Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Inferenza di argomento del tipo non riuscita per il parametro di tipo '<typeparametername1>' di '<genericproceduresignature>'. L'argomento tipo dedotto dall'argomento passato al parametro '<parametername1>' è in conflitto con l'argomento tipo dedotto dall'argomento passato al parametro '<parametername2>'.
È stata chiamata una routine generica senza argomenti di tipo e l'inferenza del tipo tentata ha generato un conflitto di tipo di dati fra i parametri di tipo.
Di norma, quando si chiama una routine generica, si fornisce un argomento di tipo per ogni parametro di tipo definito dalla routine generica. Se non si specifica alcun argomento di tipo, il compilatore prova a dedurre i tipi da passare ai parametri di tipo. Se il contesto della chiamata fornisce informazioni sui tipi di dati contraddittorie per un parametro di tipo, l'inferenza del tipo ha esito negativo.
Il codice seguente può generare questo errore.
Public Sub takeTwoValues(Of t)(ByVal x As t, ByVal y As t)
End Sub
Call takeTwoValues(4, 2.5)
Poiché il primo argomento induce il compilatore a dedurre un tipo Integer per il parametro di tipo t, mentre il secondo argomento lo induce a inferire il tipo Double per lo stesso parametro di tipo, viene a crearsi un conflitto relativamente al tipo di dati da passare a t.
ID errore: BC32116
Per correggere l'errore
Fornire degli argomenti di tipo al tipo generico in modo che il compilatore non debba dedurli.
Call takeTwoValues(Of Double)(4, 2.5)Osservare che in questo caso, in cui i due argomenti normali sono caratterizzati da tipi di dati diversi, il codice chiamante deve passare un argomento di tipo adeguato per entrambi i tipi di dati. In questo caso,
Integersi amplia inDouble.oppure
Ridefinire la routine generica per specificare parametri di tipo diversi per i parametri normali, in modo che non si crei conflitto nel dedurre i tipi.
Public Sub takeTwoValues(Of t1, t2)(ByVal x As t1, ByVal y As t2)