Const 语句 (Visual Basic)

声明并定义一个或多个常量。

语法

[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist

部件

attributelist
可选。 应用于此语句中声明的所有常量的属性列表。 请参阅尖括号(“”<和“)>中的属性列表

accessmodifier
可选。 使用此方法可以指定哪些代码可以访问这些常量。 可以是 PublicProtectedFriendProtected FriendPrivatePrivate Protected

Shadows
可选。 使用此函数可重新声明和隐藏基类中的编程元素。 查看 阴影

constantlist
必填。 在此语句中声明的常量列表。

constant [ , constant ... ]

每个 constant 语法和部分都具有以下语法和部分:

constantname [ As datatype ] = initializer

部件 DESCRIPTION
constantname 必填。 常量的名称。 请参阅 声明的元素名称
datatype 如果 Option StrictOn,则是必需的。 常量数据类型。
initializer 必填。 在编译时计算并分配给常量的表达式。

注解

如果应用程序中的值从未发生更改,则可以定义命名常量并将其用于代替文本值。 名称比值更容易记住。 只需定义一次常量,并在代码中的许多位置使用它。 如果在更高版本中需要重新定义值,则 Const 语句是唯一需要进行更改的位置。

只能在模块或过程级别使用 Const 。 这意味着变量的 声明上下文 必须是类、结构、模块、过程或块,不能是源文件、命名空间或接口。 有关详细信息,请参阅 声明上下文和默认访问级别

本地常量(过程内部)默认为公共访问,不能对它们使用任何访问修饰符。 类和模块成员常量(任何过程外部)默认为专用访问,结构成员常量默认为公共访问。 可以使用访问修饰符调整其访问级别。

规则

  • 声明上下文。 在模块级别声明的常量(在任何过程之外)是 成员常量;它是声明它的类、结构或模块的成员。

    在过程级别声明的常 量是本地常量;它是声明它的过程或块的本地位置。

  • 特性。 只能将属性应用于成员常量,而不能应用于本地常量。 属性为程序集的元数据提供信息,这对临时存储(如本地常量)没有意义。

  • 修饰 符。 默认情况下,所有常量都是 SharedStatic以及 ReadOnly。 声明常量时,不能使用这些关键字中的任何一个。

    在过程级别,不能使用 Shadows 任何访问修饰符声明本地常量。

  • 多个常量。 可以在同一声明语句中声明多个常量,为每个 constantname 常量指定部件。 多个常量用逗号分隔。

数据类型规则

  • 数据类型。Const 语句可以声明变量的数据类型。 可以指定任何数据类型或枚举的名称。

  • 默认类型。 如果未指定 datatype,则常量采用数据类型 initializer。 如果同时指定这两个datatype类型,并且必须可转换为datatype的数据类型initializerinitializer 如果两者 datatypeinitializer 不存在,则数据类型默认为 Object

  • 不同类型的。 对于声明的每个变量,可以使用单独的 As 子句为不同的常量指定不同的数据类型。 但是,不能使用通用 As 子句将多个常量声明为同一类型。

  • 初始化。 必须初始化每个常量的值 constantlist。 用于 initializer 提供要分配给常量的表达式。 表达式可以是文本、已定义的其他常量和已定义的枚举成员的任意组合。 可以使用算术和逻辑运算符来组合此类元素。

    不能在 . 中使用 initializer变量或函数。 但是,可以使用转换关键字,例如 CByteCShort。 还可以将 AscW 它与常量 StringChar 参数一起调用,因为可以在编译时对其进行计算。

行为

  • 范围。 本地常量只能从其过程或块内访问。 成员常量可从其类、结构或模块中的任何位置访问。

  • 资格。 类、结构或模块外部的代码必须使用该类、结构或模块的名称限定成员常量的名称。 过程或块外部的代码不能引用该过程或块中的任何本地常量。

示例 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

另请参阅