Const 陳述式 (Visual Basic)
宣告並定義一或多個常數。
語法
[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist
組件
attributelist
選擇性。 套用至此陳述式中宣告之所有常數的屬性清單。 請參閱角括弧中的屬性清單 ("<
" 和 ">
")。
accessmodifier
選擇性。 使用此方法來指定哪些程式碼可以存取這些常數。 可為 Public、Protected、Friend、Protected Friend、Private 或 Private Protected。
Shadows
選擇性。 使用此方法可重新宣告並隱藏基底類別中的程式設計元素。 請參閱陰影。
constantlist
必要。 在此陳述式中宣告的常數清單。
constant
[ ,
constant
... ]
每個 constant
都具有下列語法和組件:
constantname
[ As
datatype
] =
initializer
部分 | 描述 |
---|---|
constantname |
必要。 常數的名稱。 請參閱 Declared Element Names。 |
datatype |
如果 Option Strict 為 On ,則為必要項。 常數的資料型別。 |
initializer |
必要。 在編譯時評估並指派給常數的運算式。 |
備註
如果您有永遠不會在應用程式中變更的值,可以定義具名常數,並用來取代常值。 名稱比值更容易記住。 您可以只定義一次常數,然後在程式碼的許多位置使用。 如果在較新版本中,您必須重新定義值,Const
陳述式是唯一需要變更的位置。
您只能在模組或程序層級使用 Const
。 這表示變數的宣告內容必須是類別、結構、模組、程序或區塊,且不能是原始程式碼檔案、命名空間或介面。 如需詳細資訊,請參閱宣告內容和預設存取層級。
本機常數 (在程序內) 預設為公用存取,而且您無法在其中使用任何存取修飾詞。 類別和模組成員常數 (在任何程序外) 預設為私人存取,結構成員常數預設為公用存取。 您可使用存取修飾詞來調整其存取層級。
規則
宣告內容。 在任何程序外於模組層級宣告的常數是成員常數,是宣告該常數之類別、結構或模組的成員。
在程序層級宣告的常數是本機常數,在宣告該常數的程序或區塊本機。
屬性。 您只能將屬性套用至成員常數,不能套用至本機常數。 屬性會將資訊提供給組件的中繼資料,這對暫存儲存體 (如本機常數) 而言沒有意義。
修飾元。 所有常數預設都是
Shared
、Static
和ReadOnly
。 宣告常數時,您無法使用這些關鍵字。在程序層級,您無法使用
Shadows
或任何存取修飾詞來宣告本機常數。多個常數。 您可以在相同宣告陳述式中宣告多個常數,指定每個常數的
constantname
組件。 多個常數會以逗號分隔。
資料型別規則
資料類型。
Const
陳述式可以宣告變數的資料型別。 您可以指定任何資料型別或列舉的名稱。預設型別。 如果您未指定
datatype
,常數會採用initializer
的資料型別。 如果您同時指定datatype
和initializer
,則initializer
的資料型別必須可轉換為datatype
。 如果沒有datatype
和initializer
,資料型別會預設為Object
。不同型別。 您可以針對宣告的每個變數使用個別
As
子句,為不同常數指定不同資料型別。 不過,您無法使用通用As
子句,將多個常數宣告為相同型別。初始化。 您必須初始化
constantlist
中每個常數的值。 您需使用initializer
提供要指派給常數的運算式。 運算式可以是常值、已定義的其他常數,以及已定義的列舉成員的任何組合。 您可以使用算術和邏輯運算子來合併這類元素。您無法在
initializer
中使用變數或函式。 不過,您可以使用轉換關鍵字,例如CByte
和CShort
。 如果您以常數String
或Char
引數呼叫,也可以使用AscW
,因為可在編譯時加以評估。
行為
[範圍]。 本機常數只能從其程序或區塊內存取。 成員常數可從其類別、結構或模組中的任何位置存取。
限定性條件。 類別、結構或模組外的程式碼,必須以該類別、結構或模組的名稱來限定成員常數的名稱。 程序或區塊外的程式碼無法參考該程序或區塊內的任何本機常數。
範例 1
以下範例使用 Const
陳述式來宣告常數,以取代常值。
' The following statements declare constants.
Const maximum As Long = 459
Public Const helpString As String = "HELP"
Private Const startValue As Integer = 5
範例 2
如果您使用 Object
資料型別定義常數,Visual Basic 編譯器會將其設為 initializer
型別,而不是 Object
。 在以下範例中,常數 naturalLogBase
的執行階段型別為 Decimal
。
Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
naturalLogBase.GetType.ToString())
上述範例在 GetType 運算子傳回的 Type 物件上使用 ToString 方法,因為無法使用 CStr
將 Type 轉換成 String
。