Condividi tramite


BC42110: Inferenza del tipo per la variabile "<variablename>" non riuscita perché è associato a un campo nell'ambito che lo contiene

Inferenza del tipo per la variabile "<variablename>" non riuscita perché è associato a un campo nell'ambito che lo contiene. Cambiare il nome di "<variablename>" o utilizzare il nome completo, ad esempio "Me.variablename" o "MyBase.variablename".

Una variabile di controllo ciclo nel codice ha lo stesso nome di un campo della classe o di un altro ambito di inclusione. Poiché la variabile di controllo viene usata senza una clausola As, viene associata al campo nell'ambito di inclusione e il compilatore non crea una nuova variabile per essa né ne deduce il tipo.

Nell'esempio seguente la variabile di controllo Index nell'istruzione For è associata al campo Index nella classe Customer. Il compilatore non crea una nuova variabile per la variabile di controllo Index né ne deduce il tipo.

Class Customer

    ' The class has a field named Index.
    Private Index As Integer

    Sub Main()

    ' The following line will raise this warning.
        For Index = 1 To 10
            ' ...
        Next

    End Sub
End Class

Per impostazione predefinita, si tratta di un messaggio di avviso. Per informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configuring Warnings in Visual Basic.

ID errore: BC42110

Per risolvere questo avviso

  • Rendere locale la variabile di controllo del ciclo modificandone il nome in un identificatore che non sia anche il nome di un campo della classe.

    For I = 1 To 10
    
  • Chiarire che la variabile di controllo del ciclo viene associata al campo della classe anteponendo il prefisso Me. al nome della variabile.

    For Me.Index = 1 To 10
    
  • Anziché basarsi sull'inferenza del tipo locale, usare una clausola As per specificare un tipo per la variabile di controllo del ciclo.

    For Index As Integer = 1 To 10
    

Esempio

Il codice seguente illustra l'esempio precedente con la prima correzione sul posto.

Class Customer

    ' The class has a field named Index.
    Private Index As Integer

    Sub Main()

        For I = 1 To 10
            ' ...
        Next

    End Sub
End Class

Vedi anche