文本是表示为自身的值,而不是变量的值或表达式的结果,如数字 3 或字符串“Hello”。 常量是一个有意义的名称,它取代文本并在整个程序中保留相同的值,而不是一个变量,其值可能会更改。
当 Option Infer 和 Off
都是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 |
" | (无) |