Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Seu código contém um For...Next
loop no qual o compilador não pode inferir um tipo de dados para a variável de controle de loop porque as seguintes condições são verdadeiras:
O tipo de dados da variável de controle de loop não é especificado com uma
As
cláusula.Os limites de loop e a variável step contêm pelo menos dois tipos de dados.
Existe mais de uma conversão possível entre os tipos de dados.
Não há melhor tipo entre os candidatos, de modo que a escolha do tipo para a variável de controle de loop é ambígua.
Por exemplo, o loop a seguir tem um loop vinculado do tipo Integer
e um loop vinculado do tipo UInteger
:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Há uma possível conversão entre Integer
e UInteger
, e uma possível conversão entre UInteger
e Integer
, mas ambos são conversões estreitas, portanto, nenhuma delas é a melhor escolha.
No exemplo seguinte, uma terceira variável de tipo Double
é adicionada. Ambos Integer
e UInteger
têm conversões de ampliação padrão para Double
, o que torna a conversão para Double
a melhor escolha. A inferência de tipo atribui à variável i
de controle de loop o tipo Double
de dados.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
ID de erro: BC30983
Para corrigir este erro
Converta explicitamente uma das variáveis em um tipo para o qual as outras tenham uma conversão de ampliação, por exemplo:
For i = m To CLng(n)
Use uma
As
cláusula para especificar o tipo da variável de controle:For i As Double = m To n