Visual Basic での変数宣言

変数を宣言して、その名前と特性を指定します。 変数の宣言ステートメントは、Dim ステートメントです。 その場所と内容によって、変数の特性が決まります。

変数の名前付け規則と考慮事項については、「宣言された要素の名前」を参照してください。

宣言レベル

ローカル変数とメンバー変数

"ローカル変数" は、プロシージャ内で宣言されている変数です。 "メンバー変数" は、Visual Basic 型のメンバーです。この変数は、クラス、構造体、またはモジュールの内部のモジュール レベルで宣言されますが、そのクラス、構造体、またはモジュールの内部のプロシージャ内では宣言されません。

共有変数とインスタンス変数

クラス内または構造体内のメンバー変数のカテゴリは、そのメンバーが共有されているかどうかによって異なります。 Shared キーワードを使用して宣言されている場合、それは "共有変数" であり、クラスまたは構造体のすべてのインスタンス間で共有される 1 つのコピーに存在します。

そうでない場合は "インスタンス変数" であり、クラスまたは構造体のインスタンスごとに別のコピーが作成されます。 インスタンス変数の特定のコピーは、それが作成されたクラスまたは構造体のインスタンスでのみ使用できます。 それは、そのクラスまたは構造体の他のすべてのインスタンスのインスタンス変数のコピーとは無関係です。

データ型の宣言

宣言ステートメントの As 句を使用すると、宣言する変数のデータ型またはオブジェクト型を定義することができます。 変数には、次のいずれかの型を指定できます。

  • 基本データ型 (BooleanLongDecimal など)

  • 複合データ型 (配列や構造体など)

  • そのアプリケーション内または別のアプリケーション内で定義されているオブジェクト型 (クラス)

  • .NET Framework クラス (LabelTextBox など)

  • インターフェイス型 (IComparableIDisposable など)

1 つのステートメントで複数の変数を宣言できます。データ型を繰り返す必要はありません。 次のステートメントでは、変数 ijkInteger 型として、変数 lmLong 型として、変数 xySingle 型として、宣言されています。

Dim i, j, k As Integer  
' All three variables in the preceding statement are declared as Integer.  
Dim l, m As Long, x, y As Single  
' In the preceding statement, l and m are Long, x and y are Single.  

データ型について詳しくは、データ型に関するページをご覧ください。 オブジェクトについて詳しくは、「オブジェクトとクラス」および「コンポーネントによるプログラミング」をご覧ください。

ローカル型の推論

As 句を使用しないでローカル変数を宣言すると、"型の推定" を使用してそのデータ型が決定されます。 コンパイラでは、初期化式の型から変数の型が推定されます。 これにより、型を明示的に指定せずに変数を宣言できます。 次の例では、num1num2 はどちらも整数として厳密に型指定されます。

Public Sub inferenceExample()

    ' Using explicit typing.
    Dim num1 As Integer = 3

    ' Using local type inference.
    Dim num2 = 3

End Sub

ローカル型推論を使用する場合は、Option InferOn に設定する必要があります。 詳細については、「ローカル型の推論」と「Option Infer ステートメント」を参照してください。

宣言された変数の特性

変数の "有効期間" は、その変数を使用できる期間です。 一般に、変数は、それが宣言されている要素 (プロシージャやクラスなど) が存在し続ける限り、存在しています。 変数が含まれる要素の有効期間より長く、変数が存在し続ける必要がない場合は、宣言で特に何も行う必要はありません。 変数が含まれる要素より長く、変数が存在し続ける必要がある場合は、その Dim ステートメントに Static または Shared キーワードを含めることができます。 詳しくは、「Visual Basic における有効期間」をご覧ください。

変数の "スコープ" は、名前を修飾せずに変数を参照できるすべてのコードのセットです。 変数のスコープは、変数が宣言されている場所によって決まります。 特定の領域にあるコードは、その領域内で定義されている変数を、名前を修飾する必要なしに使用できます。 詳細については、「 Scope in Visual Basic」を参照してください。

変数の "アクセス レベル" は、変数にアクセスする権限を持つコードの範囲です。 これは、Dim ステートメントで使用されているアクセス修飾子 (PublicPrivate など) によって決まります。 詳しくは、「Visual Basic でのアクセス レベル」をご覧ください。

関連項目