Option
在模块级别控制某些编译行为的默认设置。
Option Base
设置数组声明的默认下界。
语法:Option Base
Option Base语句为模块中声明的所有数组设置默认下界,除非数组声明中使用了To子句显式指定下界。
如果未指定Option Base语句,则数组的默认下界为0。
示例
vb
Option Base 1
Sub ArrayExample()
Dim MyArray(5) As Integer ' 数组索引从1到5
Dim i As Integer
For i = 1 To 5
MyArray(i) = i * 10
Next i
End SubOption Compare
指定字符串比较方法。
语法:Option Compare { Binary | Text }
Binary : 基于字符的内部二进制表示形式从排序顺序派生的比较。在Microsoft Windows中,二进制比较区分大小写。
Text : 基于由系统区域设置确定的不区分大小写的文本排序顺序进行的比较。
示例
vb
Option Compare Text
Sub StringCompareExample()
Dim str1 As String, str2 As String
str1 = "Hello"
str2 = "hello"
If str1 = str2 Then
MsgBox "字符串相等(不区分大小写)"
Else
MsgBox "字符串不相等"
End If
End SubOption Explicit
强制显式声明模块中的所有变量。
语法:Option Explicit
当使用Option Explicit时,必须在首次使用变量之前使用Dim、Private、Public或ReDim语句显式声明所有变量。如果尝试使用未声明的变量名,则会发生编译时错误。
示例
vb
Option Explicit
Sub ExplicitExample()
Dim myVariable As Integer ' 必须声明变量
myVariable = 42
MsgBox myVariable
' 使用未声明的变量会导致编译错误
End SubOption Private
标记模块为私有,限制其对项目其他部分的访问。
语法:Option Private Module
Option Private Module语句使模块及其内容对整个项目私有,但对引用该项目的其他项目不可见。
示例
vb
Option Private Module
' 此模块中的代码对整个项目可用
' 但对引用此项目的其他项目不可用Option Explicit On/Off (twinBASIC特定)
twinBASIC支持显式控制Option Explicit行为的编译器指令。
语法:#Option Explicit { On | Off }
On : 启用显式变量声明要求(相当于Option Explicit)
Off : 禁用显式变量声明要求
示例
vb
#Option Explicit On
Sub ExplicitControlExample()
' 启用显式声明要求
Dim myVar As String
myVar = "Hello World"
End SubOption Strict (twinBASIC特定)
twinBASIC支持严格的类型检查。
语法:#Option Strict { On | Off }
On : 启用严格的类型检查,禁止隐式类型转换
Off : 允许隐式类型转换(默认)
示例
vb
#Option Strict On
Sub StrictExample()
Dim str As String
Dim num As Integer
num = 42
' str = num ' 这会导致编译错误,需要显式转换
str = CStr(num) ' 正确的显式转换
End SubNOTE
- Option语句必须在模块级别使用,不能在过程内使用
- 一个模块中每种Option语句只能使用一次
- Option语句必须出现在模块中任何其他代码之前
- 某些Option设置(如**#Option**)是twinBASIC特有的扩展