2.3 常量
常量是指在程序运行过程中其值不能被改变的数值或字符串。在计算机内部,常量名对应于一定的内存单元。在编写代码时,用户常常会碰到一些数值或字符串是固定不变的。为了代码编写和易于阅读,经常将这些数值或者字符串声明为常量。在Visual Basic 6.0中常量可以分为3类:局部常量、模块级常量和公用常量。本节就这3种常量的声明和使用分别进行介绍。
2.3.1 局部常量
局部常量是只能在定义的函数或者过程中访问的常量。局部常量在所需要使用的函数或过程中声明,其生存周期从函数或过程调用开始到函数或过程结束终止。
声明局部常量的语法:
Const<常量名>[As<常数的数据类型>]=<常量表达式>
参数说明如下所示。
· Const:常量定义关键字。
· 常量名:指定该常量的名称。
· As<常数的数据类型>:指定常量声明的数据类型。
· 常量表达式:常量定义的数值、字符串等常数。
以下代码演示了部分局部常量的声明示例。
01 Const PI As Double=3.1415926 '定义浮点型常量PI 02 Const bool As Boolean = True '定义逻辑型常量bool 03 Const nCount As Integer = 1000 '定义整数型常量nCount 04 Const strName As String = "Tom" '定义字符型常量strName 05 Const dateRem As Date = #01/10/2008# '定义日期型常量dateRem
上述代码中分别定义了不同数据类型的局部常量,用户在编写代码时,可以直接用常量名称来替代具体的数值。在程序中这些常量的值不会改变,如果试图通过代码来改变常量的值,程序将会报错。
注意
在使用局部常量时,另外一个需要注意的问题就是局部常量的生存周期。局部常量的生存周期只限于定义该常量的函数或子过程中。
【范例2-3】局部变量的生存周期如示例代码2-3所示。
示例代码2-3
01 Private Sub cmdDisplay_Click()
02 Const dateRem As Date = #1/10/2008# '定义常量dateRem
03 cmdDisplay.Caption = dateRem '显示常量dateRem值
04 End Sub
05
06 Private Sub cmdError_Click()
07 cmdError.Caption = dateRem '使用dateRem
08 End Sub
【运行结果】按下“F5”键运行程序,结果如图2.6所示。
图2.6 局部常量使用示例图
【代码解释】这段代码可以很清楚地说明局部变量的生存周期。在“Display”按钮“Click”事件中定义的局部常量“dateRem”只能在“cmdDisplay_Click”子过程中存在。当“Error”按钮Click”事件过程中想要调用“dateRem”常量时,程序弹出编译错误对话框,如图2.7所示。
图2.7 错误对话框
2.3.2 模块级常量
模块级常量是只能被所在模块中的过程访问的常量。其作用范围在模块内部,不能被其他模块访问。如果有同名的公用常量同时存在,在该模块中所访问的常量是该模块的模块级常量。在代码编写时,这一点必须注意到。声明模块级常量的语法如下。
Private Const<常量名>[As<常数的数据类型>]=<常量表达式>
参数和定义局部常量含义相同。以下代码演示了部分局部常量的声明示例。
01 Private Const bool As Boolean = False '定义逻辑型模块级常量bool 02 Private Const nDog As Integer = 2 '定义整数型模块级常量nDog 03 Private Const strAddr As String = "上地东里" '定义字符型模块级常量strAddr 04 Private Const dateRem As Date = #01/01/2000# '定义日期型模块级常量dateRem
2.3.3 公用常量
公用常量可以在程序所有过程和函数中使用。公用常量通常在标准模块的通用声明部分中使用Public关键字来声明。声明公用常量的语法如下所示。
Public Const<常量名>[As<常数的数据类型>]=<常量表达式>
参数和定义局部常量含义相同。以下代码演示了部分公用常量的声明示例。
01 Public Const bool As Boolean = False '定义逻辑型公用常量bool 02 Public Const nDog As Integer = 2 '定义整数型公用常量nDog 03 Public Const strAddr As String = "上地东里" '定义字符型公用常量strAddr 04 Private Const dateRem As Date = #01/01/2000# '定义日期型公用常量dateRem
注意
公用常量通常用来在程序中标识与所有过程和函数相关的数值和字符串。建议尽量少使用公用常量,以防止程序模块间的耦合。