Partilhar via


Tipo de '<nomedavariável>' não pode ser inferido porque o loop corre e a variável de etapa não se amplia ao mesmo tipo

Você escreveu um loop For...Next no qual o compilador não pode inferir tipo e 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 está especificada com uma cláusula As.

  • O loop limita-se e a variável de etapa contém pelo menos do tipos de dados.

  • Não existe nenhuma conversão padrão entre os tipos de dados.

Por isso, o compilador não pode inferir o tipo de dados de uma variável de controle de loop.

No exemplo a seguir, a variável de etapa é um caractere e os limites do loop são ambos inteiros.Devido ao fato de que não existe conversão padrão entre caracteres e inteiros, este erro é relatado.

Dim stepVar = "1"c
Dim m = 0
Dim n = 20

' Not valid.
' For i = 1 To 10 Step stepVar
    ' Loop processing
' Next

ID de erro: BC30982

Para corrigir este erro

  • Altere os tipos dos limites do loop e da variável de etapa como necessário de modo que pelo menos um deles é um tipo para o qual os outros ampliam.No exemplo anterior, altere o tipo de stepVar para Integer.

    Dim stepVar = 1
    

    - ou -

    Dim stepVar As Integer = 1
    
  • Use funções de conversão explícitas para converter os limites do loop e a variável de etapa para os tipos apropriados.No exemplo anterior, aplique a função Val a stepVar.

    For i = 1 To 10 Step Val(stepVar)
        ' Loop processing
    Next
    

Consulte também

Conceitos

Conversões explícita e implícita 

Inferência de tipos local

Conversões Ampliadoras e Redutoras

Referência

For... Next demonstrativo (Visual Basic)

Declaração Option Infer

Funções de conversão de tipo 

Função Val