Прочитать на английском

Поделиться через


Тип "<переменная">, неоднозначный, так как границы цикла и переменная шага не расширяются до того же типа.

Код содержит цикл 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
    

См. также