BC30982:无法推断“<variablename>”的类型,因为循环边界和步骤变量未扩大到同一类型

写入了 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

错误 ID:BC30982

更正此错误

  • 如有必要,请更改循环边界和步骤变量的类型,以便其中至少有一个类型是其他边界和步骤变量扩大到的类型。 在上一示例中,请将 stepVar 的类型更改为 Integer

    Dim stepVar = 1
    

    -或-

    Dim stepVar As Integer = 1
    
  • 使用显式转换函数将循环边界和步骤变量转换为适当的类型。 在上一示例中,对于 stepVar 应用 Val 函数。

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

另请参阅