Option
配置编译器选项。
Option Base
语法:Option Base { 0 | 1 }
在模块级用于声明数组下标的默认下界。
由于默认基数为0,Option Base语句永远不是必需的。
如果使用,该语句必须出现在模块或类中的任何过程、函数或属性之前。Option Base在模块中只能出现一次,且必须在包含维度的数组声明之前。
INFO
Dim、Private、Public、ReDim和Static语句中的To子句提供了更灵活的方式来控制数组下标的范围。但是,当未用To子句显式设置下界时,Option Base可以将默认下界更改为1。使用ParamArray关键字创建的数组的基数为零;Option Base不影响ParamArray(或Array函数)。
Option Base语句仅影响该语句所在模块中数组的下界。
另请参阅
模块级使用示例
本示例使用Option Base语句将默认的数组下标基数值0覆盖为1。LBound函数返回数组指定维度的最小可用下标。Option Base语句仅在模块级使用。
Module MyModule
Option Base 1 ' Set the default array subscripts to 1.
Sub Example()
Dim Lower
Dim MyArray(20), TwoDArray(3, 4) ' Declare array variables.
Dim ZeroArray(0 To 5) ' Override the default base subscript.
' Use LBound function to test lower bounds of arrays.
Console.WriteLine LBound(MyArray) ' Prints 1.
Console.WriteLine LBound(TwoDArray, 2) ' Returns 1.
Console.WriteLinee LBound(ZeroArray) ' Returns 0.
End Sub
End Module类级使用示例
Class Example1
Option Base 1
Sub New()
Dim A1(5)
Console.WriteLine LBound(A1) ' Prints 1
End Sub
End Class
Class Example0
Option Base 0
Sub New()
Dim A0(5)
Console.WriteLine LBound(A0) ' Prints 0
End Sub
End ClassOption Explicit
语法:Option Explicit
如果使用,Option Explicit语句必须出现在模块中的任何过程之前。
此选项使变量声明成为强制性的。没有对应的选项可以使声明变为可选。
当Option Explicit出现在模块中时,所有变量必须使用Dim、Private、Public、ReDim或Static语句显式声明。尝试使用未声明的变量名会在编译时引发错误。
如果没有Option Explicit语句,且Option Explicit On项目设置更改为非默认值No,则所有未声明的变量均为Variant类型,除非使用Deftype语句另行指定默认类型。
INFO
Option Explicit On项目设置在新项目中默认为Yes。
Option Explicit可防止错误键入现有变量的名称,并消除变量作用域不清晰时的混淆。
另请参阅
模块级使用示例
Module MyModule
Option Explicit ' Force explicit variable declaration.
Dim MyVar ' Declare variable.
Sub Example()
MyInt = 10 ' Undeclared variable generates error.
MyVar = 10 ' Declared variable does not generate error.
End Sub
End ModuleOption Compare
语法:Option Compare { Binary | Text | Database }
如果使用,Option Compare语句必须出现在模块中的任何过程之前。
Option Compare语句为模块指定字符串比较方法(Binary、Text或Database)。如果模块不包含Option Compare语句,默认的文本比较方法为Binary。
Option Compare Binary会根据字符的内部二进制表示派生的排序顺序进行字符串比较。在Microsoft Windows中,排序顺序由代码页决定。典型的二进制排序顺序如下例所示:
vbA < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < øOption Compare Text会根据系统的区域设置确定的不区分大小写的文本排序顺序进行字符串比较。当使用Option Compare Text对相同字符排序时,产生的文本排序顺序如下:
vb(A=a) < ( À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)Option Compare Database在twinBASIC中无效。在Microsoft Access中使用时,它会根据发生字符串比较的数据库的区域设置ID确定的排序顺序进行字符串比较。
另请参阅
示例
本示例使用Option Compare语句设置默认的字符串比较方法。Option Compare语句仅在模块级使用。
Module ModBin
' Set the string comparison method to Binary.
Option Compare Binary ' That is, "AAA" is less than "aaa".
End Module
Module ModText
' Set the string comparison method to Text.
Option Compare Text ' That is, "AAA" is equal to "aaa".
End ModuleOption Private
语法:Option Private Module
在引用多个包的应用程序中使用时,Option Private Module可防止模块或类的内容在其包外被引用。
如果使用,Option Private语句必须出现在模块级或类级,在任何过程之前。
当模块包含Option Private Module时,公共部分(例如在模块级声明的变量、对象和用户自定义类型)仍可在包含该模块的项目内使用,但其他应用程序或项目无法使用。
INFO
Option Private是使模块或类对包私有的更冗长的方式。使用Private语句可以用更简洁的方式获得等效效果:
Private Module MyModule
' ...
End Module
Private Class MyClass
' ...
End Class示例
本示例演示Option Private语句,该语句用在模块级表示整个模块是私有的。使用Option Private Module时,模块级中未声明为Private的部分对项目中的其他模块可用,但对其他项目或应用程序不可用。
Module MyModule
Option Private Module ' Indicates that the module is private.
End Module