Const 陳述式 (Visual Basic)

宣告並定義一或多個常數。

語法

[ <attributelist> ] [ accessmodifier ] [ Shadows ]
Const constantlist

組件

attributelist
選擇性。 套用至此陳述式中宣告之所有常數的屬性清單。 請參閱角括弧中的屬性清單 ("<" 和 ">")。

accessmodifier
選擇性。 使用此方法來指定哪些程式碼可以存取這些常數。 可為 PublicProtectedFriendProtected FriendPrivatePrivate Protected

Shadows
選擇性。 使用此方法可重新宣告並隱藏基底類別中的程式設計元素。 請參閱陰影

constantlist
必要。 在此陳述式中宣告的常數清單。

constant [ , constant ... ]

每個 constant 都具有下列語法和組件:

constantname [ As datatype ] = initializer

部分 描述
constantname 必要。 常數的名稱。 請參閱 Declared Element Names
datatype 如果 Option StrictOn,則為必要項。 常數的資料型別。
initializer 必要。 在編譯時評估並指派給常數的運算式。

備註

如果您有永遠不會在應用程式中變更的值,可以定義具名常數,並用來取代常值。 名稱比值更容易記住。 您可以只定義一次常數,然後在程式碼的許多位置使用。 如果在較新版本中,您必須重新定義值,Const 陳述式是唯一需要變更的位置。

您只能在模組或程序層級使用 Const。 這表示變數的宣告內容必須是類別、結構、模組、程序或區塊,且不能是原始程式碼檔案、命名空間或介面。 如需詳細資訊,請參閱宣告內容和預設存取層級

本機常數 (在程序內) 預設為公用存取,而且您無法在其中使用任何存取修飾詞。 類別和模組成員常數 (在任何程序外) 預設為私人存取,結構成員常數預設為公用存取。 您可使用存取修飾詞來調整其存取層級。

規則

  • 宣告內容。 在任何程序外於模組層級宣告的常數是成員常數,是宣告該常數之類別、結構或模組的成員。

    在程序層級宣告的常數是本機常數,在宣告該常數的程序或區塊本機。

  • 屬性。 您只能將屬性套用至成員常數,不能套用至本機常數。 屬性會將資訊提供給組件的中繼資料,這對暫存儲存體 (如本機常數) 而言沒有意義。

  • 修飾元。 所有常數預設都是 SharedStaticReadOnly。 宣告常數時,您無法使用這些關鍵字。

    在程序層級,您無法使用 Shadows 或任何存取修飾詞來宣告本機常數。

  • 多個常數。 您可以在相同宣告陳述式中宣告多個常數,指定每個常數的 constantname 組件。 多個常數會以逗號分隔。

資料型別規則

  • 資料類型。 Const 陳述式可以宣告變數的資料型別。 您可以指定任何資料型別或列舉的名稱。

  • 預設型別。 如果您未指定 datatype,常數會採用 initializer 的資料型別。 如果您同時指定 datatypeinitializer,則 initializer 的資料型別必須可轉換為 datatype。 如果沒有 datatypeinitializer,資料型別會預設為 Object

  • 不同型別。 您可以針對宣告的每個變數使用個別 As 子句,為不同常數指定不同資料型別。 不過,您無法使用通用 As 子句,將多個常數宣告為相同型別。

  • 初始化。 您必須初始化 constantlist 中每個常數的值。 您需使用 initializer 提供要指派給常數的運算式。 運算式可以是常值、已定義的其他常數,以及已定義的列舉成員的任何組合。 您可以使用算術和邏輯運算子來合併這類元素。

    您無法在 initializer 中使用變數或函式。 不過,您可以使用轉換關鍵字,例如 CByteCShort。 如果您以常數 StringChar 引數呼叫,也可以使用 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 方法,因為無法使用 CStrType 轉換成 String

另請參閱