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

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

Option InferOffOption StrictOn 时,必须使用数据类型显式声明所有常量。 在下面的示例中,MyByte 的数据类型被显式声明为数据类型 Byte

Option Strict On

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

Option InferOnOption StrictOff 时,你可以声明常量,而无需使用 As 子句指定数据类型。 编译器根据表达式的类型确定常量的类型。 默认情况下,数值整数文本被强制转换为 Integer 数据类型。 浮点数的默认数据类型为 Double,关键字 TrueFalse 指定 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 " (无)

另请参阅