常数和数据类型

更新: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

"

(无)

请参见

任务

如何:声明常量

如何:声明枚举

概念

用户定义的常数

常数概述

枚举概述

枚举和名称限定

内部常数和枚举

参考

Option Strict 语句

Option Explicit 语句 (Visual Basic)

数据类型摘要 (Visual Basic)