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


Тип <имяПеременной> не может быть выведен, поскольку для границ цикла и переменной шага нет расширяющего преобразования к одному типу

Обновлен: Ноябрь 2007

Type of '<variablename>' cannot be inferred because the loop bounds and the step variable do not widen to the same type

Написан цикл For...Next, в котором компилятор не может определить тип данных для переменной цикла, из-за следующих условий:

  • Тип данных переменной цикла не указан при помощи предложения As.

  • Границы цикла и переменная шага содержат, по крайней мере, два типа.

  • Нет стандартных преобразований типов данных.

Поэтому компилятор не определяет тип данных переменной, управляющей циклом.

В следующем примере шаг переменной является символом, а обе границы цикла являются целыми числами. Из-за отсутствия стандартного преобразования между символами и целыми числами возникает следующая ошибка.

Dim stepVar = "1"c
Dim m = 0
Dim n = 20

' Not valid.
' For i = 1 To 10 Step stepVar
    ' Loop processing
' Next

Идентификатор ошибки: BC30982

Исправление этой ошибки

  • Измените тип границы цикла либо переменной шага таким образом, чтобы можно было применить расширяющее преобразование к остальным типам. В предыдущем примере измените тип с stepVar на Integer.

    Dim stepVar = 1
    

    или

    Dim stepVar As Integer = 1
    
  • Используйте функции явного преобразования для преобразования границ цикла и переменной шага в соответствующие типы. В предыдущем примере примените функцию Val к stepVar.

    For i = 1 To 10 Step Val(stepVar)
        ' Loop processing
    Next
    

См. также

Основные понятия

Явные и неявные преобразования

Вывод локального типа

Расширяющие и сужающие преобразования

Ссылки

Инструкция For... Next (Visual Basic)

Оператор Option Infer

Функции преобразования типов

Функция Val