字面值是一個值,它直接表示為其本身,而不是變數的值或表達式的結果,例如數字 3 或字串 'Hello'。 常數是有意義的名稱,會替代直接數值,並在整個程式中保持相同的值,而不是可能會變更其值的變數。
當 Option Infer 為 且 Off 為 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 |
" | (無) |