声明并定义一个或多个常量。
语法
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
部件
attributelist
可选。 应用于此语句中声明的所有常量的属性列表。 请参阅尖括号(“”<
和“)>
中的属性列表。
accessmodifier
可选。 使用此方法可以指定哪些代码可以访问这些常量。 可以是 Public、 Protected、 Friend、 Protected Friend、 Private 或 Private Protected。
Shadows
可选。 使用此函数可重新声明和隐藏基类中的编程元素。 查看 阴影。
constantlist
必填。 在此语句中声明的常量列表。
constant
[ ,
constant
... ]
每个 constant
语法和部分都具有以下语法和部分:
constantname
[ As
datatype
] =
initializer
部件 | DESCRIPTION |
---|---|
constantname |
必填。 常量的名称。 请参阅 声明的元素名称。 |
datatype |
如果 Option Strict 为 On ,则是必需的。 常量数据类型。 |
initializer |
必填。 在编译时计算并分配给常量的表达式。 |
注解
如果应用程序中的值从未发生更改,则可以定义命名常量并将其用于代替文本值。 名称比值更容易记住。 只需定义一次常量,并在代码中的许多位置使用它。 如果在更高版本中需要重新定义值,则 Const
语句是唯一需要进行更改的位置。
只能在模块或过程级别使用 Const
。 这意味着变量的 声明上下文 必须是类、结构、模块、过程或块,不能是源文件、命名空间或接口。 有关详细信息,请参阅 声明上下文和默认访问级别。
本地常量(过程内部)默认为公共访问,不能对它们使用任何访问修饰符。 类和模块成员常量(任何过程外部)默认为专用访问,结构成员常量默认为公共访问。 可以使用访问修饰符调整其访问级别。
规则
声明上下文。 在模块级别声明的常量(在任何过程之外)是 成员常量;它是声明它的类、结构或模块的成员。
在过程级别声明的常 量是本地常量;它是声明它的过程或块的本地位置。
特性。 只能将属性应用于成员常量,而不能应用于本地常量。 属性为程序集的元数据提供信息,这对临时存储(如本地常量)没有意义。
修饰 符。 默认情况下,所有常量都是
Shared
,Static
以及ReadOnly
。 声明常量时,不能使用这些关键字中的任何一个。在过程级别,不能使用
Shadows
任何访问修饰符声明本地常量。多个常量。 可以在同一声明语句中声明多个常量,为每个
constantname
常量指定部件。 多个常量用逗号分隔。
数据类型规则
数据类型。 该
Const
语句可以声明变量的数据类型。 可以指定任何数据类型或枚举的名称。默认类型。 如果未指定
datatype
,则常量采用数据类型initializer
。 如果同时指定这两个datatype
类型,并且必须可转换为datatype
的数据类型initializer
。initializer
如果两者datatype
均initializer
不存在,则数据类型默认为Object
。不同类型的。 对于声明的每个变量,可以使用单独的
As
子句为不同的常量指定不同的数据类型。 但是,不能使用通用As
子句将多个常量声明为同一类型。初始化。 必须初始化每个常量的值
constantlist
。 用于initializer
提供要分配给常量的表达式。 表达式可以是文本、已定义的其他常量和已定义的枚举成员的任意组合。 可以使用算术和逻辑运算符来组合此类元素。不能在 . 中使用
initializer
变量或函数。 但是,可以使用转换关键字,例如CByte
和CShort
。 还可以将AscW
它与常量String
或Char
参数一起调用,因为可以在编译时对其进行计算。
行为
范围。 本地常量只能从其过程或块内访问。 成员常量可从其类、结构或模块中的任何位置访问。
资格。 类、结构或模块外部的代码必须使用该类、结构或模块的名称限定成员常量的名称。 过程或块外部的代码不能引用该过程或块中的任何本地常量。
示例 1
以下示例使用 Const
语句声明常量以代替文本值。
' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5
示例 2
如果使用数据类型 Object
定义常量,则 Visual Basic 编译器会为其指定类型 initializer
而不是 Object
类型。 在下面的示例中,常量 naturalLogBase
具有运行时类型 Decimal
。
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
naturalLogBase.GetType.ToString())
前面的示例对 GetType 运算符返回的对象使用ToString该方法Type,因为Type无法转换为String
使用 CStr
。