通过


“<variablename>”的类型不明确,因为循环边界和步骤变量未扩大到同一类型

你的代码包含 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  

IntegerUInteger之间存在可能的转换,并且 UIntegerInteger之间存在可能的长肉,但是两者都是收缩转换,因此都不是最佳选择。

在下一个示例中,添加类型为 Double 的第三个变量。 IntegerUInteger 都具有对 Double的标准扩大转换,这使转换为 Double 是最佳选择。 类型推断向循环控制变量 i 分配了数据类型 Double

Dim stepVar As Double = 1  
' Valid.  
For i = m To n Step stepVar  
    ' Loop processing.  
Next  

错误 ID: BC30983

更正此错误

  • 将一个变量显式转换为其他变量可以扩大转换为的类型,例如:

    For i = m To CLng(n)  
    
  • 使用 As 子句指定控制变量的类型:

    For i As Double = m To n
    

另请参阅