Il tipo di '<nomevariabile>' è ambiguo perché i limiti del ciclo e la clausola STEP non eseguono l'ampliamento nello stesso tipo

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

Inferenza dei tipi locali

Conversioni di ampliamento e restrizione

Riferimenti

Istruzione For...Next (Visual Basic)

Istruzione Option Infer