常數和常值資料型別 (Visual Basic)

常值 (Literal) 會表示本身的值,而非變數值或運算式的結果,例如號碼 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 資料型別。浮點數值 (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

(無)

請參閱

工作

HOW TO:宣告常數 (Visual Basic)

HOW TO:宣告列舉 (Visual Basic)

參考

Option Strict 陳述式

Option Explicit 陳述式 (Visual Basic)

資料型別摘要 (Visual Basic)

概念

使用者定義常數 (Visual Basic)

常數的概觀 (Visual Basic)

列舉型別的概觀 (Visual Basic)

列舉和名稱限定 (Visual Basic)

常數和列舉型別 (Visual Basic)