常量和文本数据类型 (Visual Basic)

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

Option InferOff 都是On时,必须使用数据类型显式声明所有常量。 在以下示例中,数据类型 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 " (无)

另请参阅