Der Typ für die Variable '<Variablenname>' wird nicht abgeleitet, da er an ein Feld in einem einschließenden Bereich gebunden ist

Aktualisiert: November 2007

Fehlermeldung

Der Typ für die Variable '<Variablenname>' wird nicht abgeleitet, da er an ein Feld in einem einschließenden Bereich gebunden ist. Ändern Sie entweder den Namen von '<Variablenname>', oder verwenden Sie den vollqualifizierten Namen (z. B. 'Me.variablenname' oder 'MyBase.variablenname').
The type for variable '<variablename>' will not be inferred because it is bound to a field in an enclosing scope. Either change the name of '<variablename>', or use the fully qualified name (for example, 'Me.variablename' or 'MyBase.variablename').

Eine Schleifensteuerungsvariable im Code hat den gleichen Namen wie ein Feld der Klasse oder andere einschließende Bereiche. Da die Steuerelementvariable ohne eine As-Klausel verwendet wird, ist sie an das Feld im einschließenden Bereich gebunden, und der Compiler erstellt weder eine neue Variable für sie noch leitet er ihren Typ ab.

Im folgenden Beispiel Index ist die Steuerelementvariable in der For-Anweisung an das Index-Feld in der Customer-Klasse gebunden. Vom Compiler wird keine neue Variable für die Steuerelementvariable Index erstellt und ihr Typ nicht abgeleitet.

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

Standardmäßig ist diese Meldung eine Warnung. Weitere Informationen zum Ausblenden von Warnungen und zum Behandeln von Warnungen als Fehler finden Sie unter Konfigurieren von Warnungen in Visual Basic.

Fehler-ID: BC42110

So reagieren Sie auf diese Warnung

  • Machen Sie die Schleifensteuerungsvariable lokal verfügbar, indem Sie ihren Namen in einen Bezeichner ändern, der nicht mit dem Feldnamen der Klasse übereinstimmt.

    For I = 1 To 10
    
  • Stellen Sie sicher, dass die Schleifensteuerungsvariable an das Klassenfeld gebunden ist, indem Sie dem Variablennamen als Präfix Me. voranstellen.

    For Me.Index = 1 To 10
    
  • Verwenden Sie eine As-Klausel, um einen Typ für die Schleifensteuerungsvariable festzulegen, anstatt sich auf den lokalen Typrückschluss zu verlassen.

    For Index As Integer = 1 To 10
    

Beispiel

Der folgende Code veranschaulicht das vorherige Beispiel mit der ersten Korrektur.

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

Siehe auch

Aufgaben

Gewusst wie: Verweisen auf die aktuelle Instanz eines Objekts

Konzepte

Lokaler Typrückschluss

Referenz

Option Infer-Anweisung

For Each...Next-Anweisung (Visual Basic)

For...Next-Anweisung (Visual Basic)

Me