Visual Basic中For循环计数器疑问:Option Explicit开启下未报错原因
VB中Option Explicit开启时For循环未报错的原因
先看你给出的代码:
Dim nofTries As Integer For nofTires = 1 To 5 If (condition) Then Exit For Next
这里nofTires属于拼写错误,但开启Option Explicit后编译器既没报错也没警告,实际运行效果等同于在For循环里显式声明计数器:
Dim nofTries As Integer For nofTires As Integer = 1 To 5 If (condition) Then Exit For Next
这是VB语言本身的语法规则导致的:
Option Explicit的作用是强制提前声明普通变量,但For循环的计数器是特殊情况——VB允许在For语句中直接使用未声明的变量作为计数器,此时编译器会自动在循环作用域内隐式声明这个变量,默认类型为Integer(如果循环的起始/结束值是其他数值类型,会自动匹配对应类型)。- 这种隐式声明的计数器变量是循环的局部变量,和外部同名变量(比如这里的
nofTries)完全独立,不会产生冲突,也不会触发Option Explicit的未声明变量错误,因为语法上认可这种循环内的隐式声明方式。
内容的提问来源于stack exchange,提问作者Ernesto
相关产品推荐
相关产品推荐

