常量和 Literal 数据类型 (Visual Basic)

更新:2011 年 5 月

文本是表示为自身的值,而不是表示为变量的值或表达式的结果,如数字 3 或字符串“Hello”。 常数是一个替代文本并在整个程序中保持此相同值的有意义名称,它与变量相对,变量的值可能会更改。

Option Infer 是 Off 并且 Option Strict 是 On 时,必须为所有变量显式声明数据类型。 在下面的示例中,MyByte 的数据类型显式声明为数据类型 Byte:

Option Strict On

Public Class Sample
  Public Const MyByte As Byte = 2
End Class

当 Option Infer 是 On 或 Option Strict 是 Off 时,可以声明变量,但无需使用 As 子句指定数据类型。 编译器通过表达式的类型确定常量的类型。 默认情况下,数值整数文本转换为 Integer 数据类型。 浮点数的默认数据类型是 Double,关键字 True 和 False 指定 Boolean 常数。

文本和类型强制

某些情况下,您可能希望将文本强制为某种特定数据类型;例如,当将一个特别大的整数文本值赋予一个类型为 Decimal 的变量时。 下面的示例会产生错误:

Dim myDecimal as Decimal
myDecimal = 100000000000000000000   ' This causes a compiler error.

错误来源于文本的表示。 Decimal 数据类型可以具有这么大的值,但是文本被隐式地表示为 Long 类型,而该类型不能具有这么大的值。

可以用两种方式将文本强制为特定数据类型:给文本追加类型字符,或将它置于封闭字符内。 类型字符或封闭字符必须紧邻文本之前和/或之后,中间不能有任何空格或字符。

若要使上例正确运行,可以在文本后追加类型字符 D,它使文本表示为 Decimal:

Dim MyDecimal As Decimal = 100000000000000000000D

下面的示例说明类型字符和封闭字符的正确用法:

' Default to Integer.
Public Const DefaultInteger As Integer = 100

' Default to Double.
Public Const DefaultDouble As Double = 54.3345612

' Force constant to be type Char.
Public Const MyCharacter As Char = "a"c

' DateTime constants.
Public Const MyDate As DateTime = #1/15/2001#
Public Const MyTime As DateTime = #1:15:59 AM#

' Force data type to be Long.
Public Const MyLong As Long = 45L

' Force data type to be Single.
Public Const MySingle As Single = 45.55!

下表显示 Visual Basic 中可用的封闭字符和类型字符。

数据类型

封闭字符

追加的类型字符

Boolean

(无)

(无)

Byte

(无)

(无)

Char

"

C

Date

#

(无)

Decimal

(无)

D 或 @

Double

(无)

R 或 #

Integer

(无)

I 或 %

Long

(无)

L 或 &

Short

(无)

S

Single

(无)

F 或 !

String

"

(无)

请参见

任务

如何:声明常量 (Visual Basic)

如何:声明枚举 (Visual Basic)

参考

Option Strict 语句

Option Explicit 语句 (Visual Basic)

数据类型摘要 (Visual Basic)

概念

用户定义的常量 (Visual Basic)

常量概述 (Visual Basic)

枚举概述 (Visual Basic)

枚举和名称限定 (Visual Basic)

常量和枚举 (Visual Basic)

修订记录

日期

修订记录

原因

2011 年 5 月

修改了有关类型推理的信息。

内容 Bug 修复