常量和 Literal 数据类型 (Visual Basic)
文本是表示为自身的值,而不是变量的值或表达式的结果,如数字 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 |
" | (无) |