Skip to content

Option

配置编译器选项。

Option Base

语法:Option Base { 0 | 1 }

模块级用于声明数组下标的默认下界。

由于默认基数为0Option Base语句永远不是必需的。

如果使用,该语句必须出现在模块中的任何过程、函数或属性之前。Option Base在模块中只能出现一次,且必须在包含维度的数组声明之前。

INFO

DimPrivatePublicReDimStatic语句中的To子句提供了更灵活的方式来控制数组下标的范围。但是,当未用To子句显式设置下界时,Option Base可以将默认下界更改为1。使用ParamArray关键字创建的数组的基数为零;Option Base不影响ParamArray(或Array函数)。

Option Base语句仅影响该语句所在模块中数组的下界。

另请参阅

模块级使用示例

本示例使用Option Base语句将默认的数组下标基数值0覆盖为1。LBound函数返回数组指定维度的最小可用下标。Option Base语句仅在模块级使用。

vb
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

类级使用示例

vb
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 Class

Option Explicit

语法:Option Explicit

模块级用于强制显式声明该模块中的所有变量

如果使用,Option Explicit语句必须出现在模块中的任何过程之前。

此选项使变量声明成为强制性的。没有对应的选项可以使声明变为可选。

Option Explicit出现在模块中时,所有变量必须使用DimPrivatePublicReDimStatic语句显式声明。尝试使用未声明的变量名会在编译时引发错误。

如果没有Option Explicit语句,且Option Explicit On项目设置更改为非默认值No,则所有未声明的变量均为Variant类型,除非使用Deftype语句另行指定默认类型。

INFO

Option Explicit On项目设置在新项目中默认为Yes

Option Explicit可防止错误键入现有变量的名称,并消除变量作用域不清晰时的混淆。

另请参阅

模块级使用示例

vb
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 Module

Option Compare

语法:Option Compare { Binary | Text | Database }

如果使用,Option Compare语句必须出现在模块中的任何过程之前。

Option Compare语句为模块指定字符串比较方法(BinaryTextDatabase)。如果模块不包含Option Compare语句,默认的文本比较方法为Binary

  • Option Compare Binary会根据字符的内部二进制表示派生的排序顺序进行字符串比较。在Microsoft Windows中,排序顺序由代码页决定。典型的二进制排序顺序如下例所示:

    vb
    A < 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语句仅在模块级使用。

vb
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 Module

Option Private

语法:Option Private Module

在引用多个的应用程序中使用时,Option Private Module可防止模块的内容在其包外被引用。

如果使用,Option Private语句必须出现在模块级类级,在任何过程之前。

当模块包含Option Private Module时,公共部分(例如在模块级声明的变量对象用户自定义类型)仍可在包含该模块的项目内使用,但其他应用程序或项目无法使用。

INFO

Option Private是使模块或类对包私有的更冗长的方式。使用Private语句可以用更简洁的方式获得等效效果:

vb
Private Module MyModule
    ' ...
End Module 

Private Class MyClass
    ' ...
End Class

示例

本示例演示Option Private语句,该语句用在模块级表示整个模块是私有的。使用Option Private Module时,模块级中未声明为Private的部分对项目中的其他模块可用,但对其他项目或应用程序不可用。

vb
Module MyModule
    Option Private Module ' Indicates that the module is private.
End Module

twinBASIC及其LOGO版权为作者"韦恩"所有