Тип "<переменная">, неоднозначный, так как границы цикла и переменная шага не расширяются до того же типа.
Код содержит цикл For...Next
, в котором компилятор не может вывести тип данных для управляющей переменной цикла, так как выполняются указанные ниже условия.
Тип данных управляющей переменной цикла не указан с помощью выражения
As
.Границы цикла и переменная шага содержат по крайней мере два типа данных.
Между типами данных возможно несколько преобразований.
Среди кандидатов нет лучшего типа, поэтому выбор типа для управляющей переменной цикла неоднозначен.
Например, приведенный ниже цикл имеет одну границу цикла типа Integer
и одну границу типа UInteger
.
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Возможны преобразования между Integer
и UInteger
и между UInteger
и Integer
, но оба преобразования сужающие, поэтому ни одно из них не является лучшим.
В следующем примере добавляется третья переменная типа Double
. Как Integer
, так и UInteger
имеют стандартные расширяющие преобразования в Double
, вследствие чего преобразование в Double
является лучшим вариантом. В результате вывода типа управляющей переменной цикла i
присваивается тип данных Double
.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
Идентификатор ошибки: BC30983
Явным образом преобразуйте одну из переменных в тип, для которого у остальных есть расширяющие преобразования, например:
For i = m To CLng(n)
Используйте выражение
As
, чтобы указать тип управляющей переменной:For i As Double = m To n
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: