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.
Aggiornamento: novembre 2007
Type of '<variablename>' is ambiguous because the loop bounds and the step variable do not widen to the same type
Il codice contiene un ciclo For...Next nel quale il compilatore non è in grado di dedurre un tipo di dati per la variabile di controllo del ciclo poiché si verificano le seguenti condizioni:
Il tipo di dati della variabile di controllo del ciclo non è specificato con una clausola As.
I limiti del ciclo e la clausola dell'istruzione contengono almeno due tipi di dati.
Esistono più possibili conversioni tra i tipi di dati.
Non esiste il tipo migliore fra i candidati, pertanto la scelta del tipo per la variabile di controllo del ciclo è ambigua.
Ad esempio, nel ciclo seguente sono presenti un limite del ciclo di tipo Integer e un limite del ciclo di tipo UInteger:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Vi è una possibile conversione tra Integer e UIntegere una possibile conversione tra UInteger e Integer, ma sono entrambe conversioni verso un tipo di dati più piccolo, pertanto nessuna di esse è la migliore scelta.
Nel prossimo esempio viene aggiunta una terza variabile di tipo Double. Integer e UInteger hanno conversioni standard verso il tipo di dati più grande Double, il che rende la conversione a Double la migliore scelta. L'inferenza dei tipi assegna alla variabile di controllo del ciclo i il tipo di dati Double.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
ID errore: BC30983
Per correggere l'errore
Convertire in modo esplicito una delle variabili in un tipo in cui le altre variabili hanno una conversione verso un tipo di dati più grande, ad esempio:
For i = m To CLng(n)Utilizzare una clausola As per specificare il tipo della variabile di controllo.
For i As Double = m To n
Vedere anche
Concetti
Conversioni implicite ed esplicite
Conversioni di ampliamento e restrizione