Тип для переменной <имяПеременной> не будет определен, так как она привязана к полю во включающей области
Обновлен: Ноябрь 2007
Сообщение об ошибке
Тип переменной <имя переменной> не будет определен, так как она привязана к полю во включающей области видимости. Либо измените имя <имя переменной>, либо используйте полное имя (например, "Me.VariableName" или "MyBase.VariableName").
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').
Имя переменной цикла совпадает с именем поля класса или другой заключающей ее области видимости. Поскольку управляющая переменная используется без предложения As, она присоединена к полю во включающей области, и компилятор не создает новую переменную и не выводит ее тип.
В следующем примере управляющая переменная Index в операторе For связана с полем Index в классе Customer. Компилятор не создает новую переменную для управляющей переменной 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
По умолчанию это сообщение является предупреждающим. Сведения о том, как скрыть предупреждения или как рассматривать предупреждения как ошибки, см. в разделе Настройка предупреждений в Visual Basic.
Идентификатор ошибки: 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()
' The following line will raise this warning.
For I = 1 To 10
' ...
Next
End Sub
End Class
См. также
Задачи
Практическое руководство. Ссылка на текущий экземпляр объекта
Основные понятия
Ссылки
Инструкция For Each... Next (Visual Basic)