次の方法で共有


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

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

構文

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

部品

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

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

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

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

constant [ , constant ... ]

constant には、次の構文と部分があります。

constantname [ As datatype ] = initializer

部分 説明
constantname 必須。 定数の名前。 「宣言された要素名」を参照してください。
datatype Option StrictOn の場合は必須です。 定数のデータ型。
initializer 必須。 コンパイル時に評価され、定数に割り当てられる式。

注釈

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

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

(プロシージャ内の) ローカル定数は既定でパブリック アクセスであり、アクセス修飾子は使用できません。 クラスとモジュールのメンバー定数 (プロシージャ外) は既定でプライベート アクセス、構造体メンバー定数は既定でパブリック アクセスです。 アクセス修飾子を使用してアクセス レベルを調整できます。

準則

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

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

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

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

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

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

データ型の規則

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

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

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

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

    initializerで変数または関数を使用することはできません。 ただし、 CByteCShortなどの変換キーワードを使用できます。 AscWを定数StringまたはChar引数で呼び出す場合は、コンパイル時に評価できるため、使用することもできます。

行動

  • 範囲。 ローカル定数には、プロシージャまたはブロック内からのみアクセスできます。 メンバー定数は、クラス、構造体、またはモジュール内のどこからでもアクセスできます。

  • 資格。 クラス、構造体、またはモジュールの外部のコードでは、メンバー定数の名前を、そのクラス、構造体、またはモジュールの名前で修飾する必要があります。 プロシージャまたはブロックの外側のコードは、そのプロシージャまたはブロック内のローカル定数を参照できません。

例 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 メソッドを使用します。Typeは、CStrを使用してStringに変換できないためです。

こちらも参照ください