常數和常值資料類型 (Visual Basic)
常值是以本身表示的值,而不是變數的值或運算式的結果,例如數字 3 或字串 "Hello"。 常數是有意義的名稱,會取代常值,並在整個程式中保留此相同的值,而不是值可能會變更的變數。
當 Option Infer 為 Off
且 Option Strict 為 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 |
" | (無) |