常數和常值資料型別
更新:2007 年 11 月
常值 (Literal) 會表示本身的值,而非變數值或運算式的結果,例如號碼 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 資料型別。浮點數值 (Floating-Point Number) 的預設資料型別為 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 |
" |
(無) |