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.
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 perché si verificano le condizioni seguenti:
Il tipo di dati della variabile di controllo del ciclo non è specificato con una clausola
As.I limiti del ciclo e la clausola step contengono almeno due tipi di dati.
Esistono più possibili conversioni tra i tipi di dati.
Non esiste un tipo migliore fra i candidati, pertanto la scelta del tipo per la variabile di controllo del ciclo è ambigua.
Ad esempio, il ciclo seguente contiene 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
C'è 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 del tipo 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 esplicitamente una delle variabili in un tipo per cui le altre variabili hanno una conversione verso un tipo di dati più grande, ad esempio:
For i = m To CLng(n)Usare una clausola
Asper specificare il tipo della variabile di controllo:For i As Double = m To n