Partilhar via


O tipo de variável '<variablename>' não será inferido porque está limite a um campo em um escopo de fechamento

Mensagem de erro

O tipo de variável '<variablename>' não será inferido porque está limite a um campo em um escopo de fechamento.Altere o nome de '<variablename>' ou use o nome totalmente qualificado (por exemplo, 'Me.variablename' ou 'MyBase.variablename').

Uma variável de controle de loop em seu código tem o mesmo nome sistema autônomo um campo da classe ou em Outros escopo de fechamento.Como a variável de controle é usada sem um As cláusula, ele é limite ao campo no escopo de fechamento e o compilador não criar uma nova variável para ele ou inferir o tipo.

No exemplo a seguir, Index, a variável de controle no For demonstrativo, está limite a Index campo de Customer classe. O compilador não cria uma nova variável de controle variável Index ou inferir o 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

Por padrão, essa é uma mensagem de aviso.Para obter informações sobre sistema autônomo ocultar avisos ou sistema autônomo tratar avisos sistema autônomo erros, consulte Configurando Avisos (Warnings) no Visual Basic.

ID de erro: BC42110

Para resolver esse aviso

  • Tornar a variável de controle de loop locais, alterando seu nome para um identificador que também não é o nome de um campo da classe.

    For I = 1 To 10
    
  • Esclarecer se a variável de controle de loop é vinculado ao campo classe pela colocação de um prefixo Me. para o nome da variável.

    For Me.Index = 1 To 10
    
  • Em vez de depender de inferência de tipos de tipos local, use um As cláusula para especificar um tipo para a variável de controle de loop.

    For Index As Integer = 1 To 10
    

Exemplo

O código a seguir mostra o exemplo anterior com a primeira correção no lugar.

Class Customer

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

    Sub Main()

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

    End Sub
End Class

Consulte também

Tarefas

Como: Consulte a instância corrente de um objeto

Conceitos

Inferência de tipos local

Referência

Declaração Option Infer

For each... Next demonstrativo (Visual Basic)

For... Next demonstrativo (Visual Basic)

Me