你的代码包含 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
错误 ID: BC30983
更正此错误
将一个变量显式转换为其他变量可以扩大转换为的类型,例如:
For i = m To CLng(n)使用
As子句指定控制变量的类型:For i As Double = m To n