Sdílet prostřednictvím


BC42110: Typ proměnné variablename<> nebude odvozen, protože je svázán s polem v uzavřeném oboru.

Typ proměnné variablename<> nebude odvozen, protože je svázán s polem v uzavřeném oboru. Změňte název< proměnné nebo> použijte plně kvalifikovaný název (například Me.variablename nebo MyBase.variablename).

Řídicí proměnná smyčky v kódu má stejný název jako pole třídy nebo jiného nadřazeného oboru. Protože se řídicí proměnná používá bez As klauzule, je svázaná s polem v uzavřeném oboru a kompilátor pro něj nevytvoří novou proměnnou nebo odvodí její typ.

V následujícím příkladu Indexje řídicí proměnná v For příkazu svázaná s Index polem Customer ve třídě. Kompilátor nevytvoří novou proměnnou pro řídicí proměnnou Index ani odvozuje její typ.

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

Ve výchozím nastavení je tato zpráva upozorněním. Informace o tom, jak skrýt upozornění nebo jak zacházet s upozorněními jako s chybami, naleznete v tématu Konfigurace upozornění v jazyce Visual Basic.

ID chyby: BC42110

Pokud chcete toto upozornění vyřešit

  • Změňte proměnnou ovládacího prvku smyčky na místní změnou jejího názvu na identifikátor, který není také názvem pole třídy.

    For I = 1 To 10
    
  • Objasněte si, že řídicí proměnná smyčky je svázána s polem třídy předponou Me. názvu proměnné.

    For Me.Index = 1 To 10
    
  • Místo toho, abyste se museli spoléhat na odvození místního typu, použijte As klauzuli k určení typu pro řídicí proměnnou smyčky.

    For Index As Integer = 1 To 10
    

Příklad

Následující kód ukazuje předchozí příklad s první opravou.

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

Viz také