Const ステートメント (Visual Basic)

1 つ以上の定数を宣言して定義します。

構文

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

指定項目

attributelist
任意。 このステートメントで宣言されているすべての定数に適用される属性の一覧。 山かっこ ("<" および ">") 内の属性リストを参照してください。

accessmodifier
任意。 これらの定数にアクセスできるコードを指定するには、これを使用します。 PublicProtectedFriendProtected FriendPrivate、または Private Protected を指定できます。

Shadows
任意。 基底クラスのプログラミング要素を再宣言し、隠すには、これを使用します。 「Shadows」を参照してください。

constantlist
必須です。 このステートメントで宣言されている定数の一覧。

constant [ , constant ... ]

constant の構文と指定項目は次のとおりです。

constantname [ As datatype ] = initializer

パーツ 説明
constantname 必須です。 定数の名前。 「 Declared Element Names」を参照してください。
datatype Option StrictOn の場合は必須です。 定数のデータ型。
initializer 必須です。 コンパイル時に評価され、定数に代入される式。

Remarks

アプリケーションで変更されない値がある場合は、名前付き定数を定義し、リテラル値の代わりに使用できます。 名前は、値よりも覚えやすくなります。 定数は 1 回だけ定義すれば、コード内の多くの場所で使用できます。 後のバージョンで値を再定義する必要がある場合、変更する必要がある場所は、Const ステートメントだけです。

Const はモジュールまたはプロシージャ レベルでのみ使用できます。 つまり、変数の宣言コンテキストは、クラス、構造体、モジュール、プロシージャ、またはブロックであることが必要で、ソース ファイル、名前空間、インターフェイスにすることはできません。 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。

プロシージャ内のローカル定数は、既定でパブリック アクセスに設定されていて、それらでアクセス修飾子を使用することはできません。 クラスおよびモジュール メンバー定数 (プロシージャの外部) の既定は、プライベート アクセスに設定され、構造体メンバー定数の既定は、パブリック アクセスに設定されます。 アクセス修飾子を使用してこれらのアクセス レベルを調整できます。

ルール

  • 宣言コンテキスト。 モジュール レベルでプロシージャの外部で宣言された定数はメンバー定数です。これは、それを宣言するクラス、構造体、またはモジュールのメンバーです。

    プロシージャ レベルで宣言された定数はローカル定数です。これは、それを宣言するプロシージャまたはブロックに対してローカルです。

  • 属性。 属性は、メンバー定数にのみ適用でき、ローカル定数には適用できません。 属性は、アセンブリのメタデータに情報を提供します。これは、ローカル定数などの一時ストレージには意味がありません。

  • 修飾子。 既定で、すべての定数は SharedStatic、および ReadOnly です。 定数の宣言時に、これらのキーワードを使用することはできません。

    プロシージャ レベルで、Shadows または任意のアクセス修飾子を使用して、ローカル定数を宣言することはできません。

  • 複数の定数。 同じ宣言ステートメントで複数の定数を宣言し、それぞれに constantname 部分を指定できます。 複数の定数はコンマで区切ります。

データ型ルール

  • データ型。 Const ステートメントでは、変数のデータ型を宣言できます。 任意のデータ型や列挙の名前を指定できます。

  • 既定の型。 datatype を指定しない場合、定数は initializer のデータ型を受け取ります。 datatypeinitializer の両方を指定した場合、initializer のデータ型は datatype に変換可能である必要があります。 datatypeinitializer も存在しない場合、データ型は既定で Object に設定されます。

  • さまざまな型。 宣言する定数ごとに個別の As 句を使用して、異なる定数に異なるデータ型を指定できます。 ただし、共通の As 句を使用して、複数の定数を同じ型として宣言することはできません。

  • 初期化。 constantlist 内のすべての定数の値を初期化する必要があります。 initializer を使用して、定数に代入される式を指定します。 式には、リテラルの任意の組み合わせ、既に定義されている他の定数、および既に定義されている列挙型メンバーを指定できます。 算術演算子と論理演算子を使用して、そのような要素を組み合わせることができます。

    initializer では、変数や関数を使用することはできません。 ただし、CByteCShort などの変換キーワードを使用できます。 定数 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 コンパイラによって Object ではなく initializer の型が指定されます。 次の例では、定数 naturalLogBase はランタイム型 Decimal になります。

Const naturalLogBase As Object = CDec(2.7182818284)
MsgBox("Run-time type of constant naturalLogBase is " &
    naturalLogBase.GetType.ToString())

前の例では、GetType 演算子によって返された Type オブジェクトに対して ToString メソッドを使用しています。TypeCStr を使用して String に変換できないためです。

関連項目