Visual Basic での変数宣言
更新 : 2007 年 11 月
変数を宣言して、変数の名前と特性を指定します。変数の宣言ステートメントは、Dim ステートメント (Visual Basic) です。このステートメントの場所と内容により、変数の特性が決まります。
変数の名前付け規則および考慮事項については、「宣言された要素の名前」を参照してください。
宣言のレベル
ローカル変数およびメンバ変数
プロシージャ内で宣言された変数をローカル変数と呼びます。メンバ変数は、Visual Basic 型のメンバです。これは、クラス、構造体、またはモジュールの内部のプロシージャ内ではなく、クラス、構造体、またはモジュール内のモジュール レベルで宣言されます。
共有変数およびインスタンス変数
クラスや構造体では、メンバ変数の変数のカテゴリは、その変数が共有されているかどうかによって決まります。共有キーワードを使って宣言した変数は共有変数となり、クラスや構造体のすべてのインスタンスが 1 つのコピーを共有します。
それ以外の変数はインスタンス変数となり、クラスや構造体の各インスタンスごとにコピーが作成されます。インスタンス変数のコピーは、作成されたインスタンス以外では使用できません。これは、他のインスタンスのコピーから独立しています。
データ型の宣言
宣言ステートメントで As 句を使用すると、宣言する変数のデータ型またはオブジェクトの型を定義できます。変数に指定できる型は次のとおりです。
Boolean、Long、Decimal などの基本データ型
配列や構造体などの複合データ型
作成したアプリケーションまたはその他のアプリケーションのいずれかで定義された、オブジェクト型またはクラス
IComparable または IDisposable などのインターフェイス型
1 つのステートメントで複数の変数を宣言できます。この場合、データ型を繰り返す必要はありません。次のステートメントでは、変数 i、j、および k は Integer 型として、l と m は Long 型として、x と y は Single 型として、それぞれ宣言されています。
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.
データ型の詳細については、「Visual Basic におけるデータ型」を参照してください。オブジェクトの詳細については、「Visual Basic におけるオブジェクト指向プログラミング」および「コンポーネントによるプログラミング」を参照してください。
ローカル型の推論
Visual Basic 2008 では、型の推論を使用して、As 句なしで宣言されているローカル変数のデータ型が決定されるようになりました。コンパイラは、初期化式の型から変数の型を推測します。これにより、型を明示的に指定せずに変数を宣言することができます。次の例では、num1 と num2 は両方とも整数として厳密に型指定されています。
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
ローカル型の推論を使用する場合には、Option Infer を On に設定する必要があります。詳細については、「ローカル型の推論」を参照してください。
特性の宣言
変数の有効期間とは、その変数を使用できる期間です。一般的には、(プロシージャまたはクラスなどの) 変数が宣言された要素が存在し続ける限り、変数は存在します。変数の有効期間を延長することが可能な場合もあります。詳細については、「Visual Basic における有効期間」を参照してください。
変数のスコープとは、名前に修飾子を付けずにその変数を参照できるコードの範囲です。変数のスコープは、変数を宣言した位置で決まります。変数を定義した領域にあるコードでは、名前に修飾子を付けずにその変数を使用できます。詳細については、「Visual Basic におけるスコープ」を参照してください。
変数のアクセス レベルは、変数へのアクセス許可を持ったコードのエクステントです。これは、Dim ステートメントで使用する、(Public (Visual Basic) または Private (Visual Basic) などの) アクセス修飾子で決まります。詳細については、「Visual Basic でのアクセス レベル」を参照してください。