无法推断出变量“<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