“<variablename>”的类型不明确,因为循环边界和步骤变量未扩大到同一类型
更新:2007 年 11 月
代码包含一个 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 为转换目标的转换成为最佳选择。类型推断将数据类型 Double 分配给循环控制变量 i。
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