BC42110:无法推断出变量“<variablename>”的类型,因为它绑定到封闭范围中的某个字段

无法推断出变量“<variablename>”的类型,因为它绑定到封闭范围中的某个字段。 更改“<variablename>”的名称,或者使用完全限定名(例如,“Me.variablename”或“MyBase.variablename”)。

代码中的循环控制变量与类或其他封闭范围的字段具有相同的名称。 由于控制变量在没有 As 子句的情况下使用,因此它绑定到封闭范围内的字段,并且编译器不会为其新建变量或推断其类型。

在以下示例中,For 语句中的控制变量 Index 绑定到 Customer 类中的 Index 字段。 编译器不会为控制变量 Index 新建变量或推断其类型。

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

默认情况下,此消息是一个警告。 有关如何隐藏警告或如何将警告视为错误的信息,请参见 Configuring Warnings in Visual Basic

错误 ID:BC42110

解决此警告

  • 将循环控制变量设为局部变量,方法是将其名称更改为不为类字段名称的标识符。

    For I = 1 To 10
    
  • 阐明循环控制变量通过为自己添加 Me. 前缀来绑定到类字段。

    For Me.Index = 1 To 10
    
  • 使用 As 子句来指定循环控制变量的类型,而不是依赖本地类型推断。

    For Index As Integer = 1 To 10
    

示例

以下代码显示进行了首次修正的旧示例。

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

另请参阅