常数和数据类型
更新:2007 年 11 月
文本是表示为自身的值,而不是表示为变量的值或表达式的结果,如数字 3 或字符串“Hello”。常数是一个替代文本并在整个程序中保持此相同值的有意义名称,它与变量相对,变量的值可能会更改。
当 Option Strict 为 On 时,必须使用数据类型显式声明所有常数。在下面的示例中,MyByte 的数据类型显式声明为数据类型 Byte:
Option Strict On
Public Class Sample
Public Const MyByte As Byte = 2
End Class
显式声明类型可以防止歧义,指定类型的代码比未指定类型的代码更易于阅读和维护。但是,当 Option Strict 为 Off 时,编译器使用所用表达式的类型来初始化该常数。默认情况下,数值整数文本转换为 Integer 数据类型。浮点数的默认数据类型是 Double,关键字 True 和 False 指定 Boolean 常数。
文本和类型强制
某些情况下,您可能希望将文本强制为某种特定数据类型;例如,当将一个特别大的整数文本值赋予一个类型为 Decimal 的变量时。下面的示例会产生错误:
Dim myDecimal as Decimal
myDecimal = 100000000000000000000 ' This causes a compiler error.
错误来源于文本的表示。Decimal 数据类型可以具有这么大的值,但是文本被隐式地表示为 Long 类型,而 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 |
" |
(无) |