Static (Visual Basic)

1 つ以上の宣言されているローカル変数が存在し続け、それらが宣言されているプロシージャの終了後もその最新の値が保持されるように指定します。

Remarks

通常、プロシージャ内のローカル変数は、プロシージャが停止するとすぐに存在しなくなります。 静的変数は存在し続け、その最新の値が保持されます。 次回にコードでプロシージャを呼び出したときに、変数は再初期化されず、それに代入された最新の値も保持されます。 静的変数は、それが定義されているクラスまたはモジュールの有効期間にわたって存在し続けます。

ルール

  • 宣言コンテキスト。 Static は、ローカル変数にのみ使用できます。 つまり、Static 変数の宣言コンテキストは、プロシージャまたはプロシージャ内のブロックにする必要があり、ソース ファイル、名前空間、クラス、構造体、またはモジュールにすることはできません。

    構造体プロシージャ内で Static を使用することはできません。

  • Static ローカル変数のデータ型は推論できません。 詳細については、「ローカル型の推論」を参照してください。

  • 結合された修飾子。 同じ宣言内で StaticReadOnlyShadows、または Shared と共に指定することはできません。

動作

Shared プロシージャで静的変数を宣言する場合、アプリケーション全体で使用できる静的変数のコピーは 1 つだけです。 クラスのインスタンスを指す変数ではなく、クラス名を使用して Shared プロシージャを呼び出します。

Shared ではないプロシージャで静的変数を宣言すると、クラスの各インスタンスで使用できる変数のコピーは 1 つだけです。 非共有プロシージャを呼び出すには、クラスの特定のインスタンスを指す変数を使用します。

次の例は、Static の使い方を示しています。

Function updateSales(ByVal thisSale As Decimal) As Decimal
    Static totalSales As Decimal = 0
    totalSales += thisSale
    Return totalSales
End Function

Static 変数の totalSales は、1 回だけ 0 に初期化されます。 updateSales を入力するたびに、totalSales には、それに対して計算した最新の値が引き続き含まれます。

Static 修飾子は、次のコンテキストで使用できます。

Dim ステートメント

関連項目