クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
Visual Basic
Visual Basic 言語の機能
宣言された要素
宣言された要素の特性

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
Visual Basic 言語の概念
Visual Basic における有効期間

宣言された要素の有効期間とは、その要素を使用できる期間です。変数は、有効期間がある唯一の要素です。このために、コンパイラでは、プロシージャ パラメータおよび関数の戻り値が、変数の特別な例として扱われます。変数の有効期間は、変数が値を保持できる期間を表します。保持されている値は変わっても、有効期間中は常になんらかの値が保持されています。

さまざまな有効期間

(プロシージャ外部の、モジュール レベルで宣言された) メンバ変数は、通常、宣言された要素と同じ有効期間を持っています。クラスまたは構造体で宣言された非共有変数は、宣言されたクラスまたは構造体の各インスタンスの別個のコピーとして存在します。そのような各変数は、インスタンスと同じ有効期間を持っています。ただし、共有 (Shared) 変数の有効期間は 1 つだけで、アプリケーションが終了するまで存続します。

(プロシージャの内部で宣言された) ローカル変数は、宣言されたプロシージャが実行されている間だけ存在します。そのプロシージャのパラメータ、および関数の戻り値についても同様です。ただし、プロシージャが他のプロシージャを呼び出した場合は、呼び出されたプロシージャの実行中もローカル変数の値は保持されます。

有効期間の開始

ローカル変数の有効期間は、宣言されたプロシージャの制御が開始されるときに始まります。すべてのローカル変数は、プロシージャの実行が開始されるとすぐに、データ型の既定値に初期化されます。初期値を指定する Dim ステートメント (Visual Basic) がプロシージャで検出されると、コードによって他の値が既に割り当てられていたとしても、これらの値にこれらの変数が設定されます。

構造体変数の各メンバは、独立した変数として初期化されます。同様に、配列変数の各要素も個別に初期化されます。

プロシージャ内部のブロック内で宣言された変数 (For ループなど) は、そのプロシージャへのエントリ時点で初期化されます。これらの初期化は、コードによってそのブロックが実行されるかどうかにかかわらず、有効になります。

有効期間の終了

プロシージャが終了すると、ローカル変数の値は保持されず、Visual Basic によってメモリが確保されます。次にプロシージャを呼び出すときに、すべてのローカル変数が再度作成され、再初期化されます。

クラスまたは構造体のインスタンスが終了すると、非共有変数はメモリおよび値を失います。クラスまたは構造体のそれぞれの新しいインスタンスによって、非共有変数が作成および再初期化されます。しかし、Shared 変数はアプリケーションが実行を停止するまで保持されます。

有効期間の延長

Static (Visual Basic) キーワードを持つローカル変数を宣言した場合、有効期間はプロシージャの実行時間よりも長くなります。Static 変数が存在する長さが、どのようにプロシージャ宣言によって決定されるのかを、次の表に示します。

プロシージャの場所および共有 静的変数の有効期間の開始 静的変数の有効期間の終了

モジュール内 (既定で共有)

プロシージャが最初に呼び出されたとき

アプリケーションの実行が停止されたとき

クラスまたは構造体の Shared (プロシージャはインスタンス メンバではありません)

特定のインスタンス、またはクラス名や構造体名自体のいずれかで、プロシージャが最初に呼び出されたとき

アプリケーションの実行が停止されたとき

Shared ではなく、クラスまたは構造体のインスタンス (プロシージャはインスタンス メンバではありません)

特定のインスタンスで、プロシージャが最初に呼び出されたとき

ガベージ コレクション (GC) に対して、インスタンスが解放されたとき

参照

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker