Static変数

 プロシージャースコープの変数は、既定ではプロシージャが終了すると変数が破棄されます。同じプロシージャを再び呼び出すと、新たに変数が用意されます。

 そのローカル変数にStaticキーワードをつけるとプロシージャが終了しても破棄されずにその後も利用できます。Staticキーワードを付けて宣言する変数は静的な変数になります。一度用意されると破棄されずに残るためです。一方、Staticキーワードを付けずに宣言する変数は動的な変数になります。使用する時に用意され、処理が終わると破棄されます。

Static変数宣言の書式
Static 変数名 As データ型

○ プロジェクト

 次のようにプロジェクトを作成してください。今回は、Windowsフォームアプリケーションを作成します。

プロジェクトの種類 Windows フォーム アプリケーション
プロジェクト名 StaticTest

サンプルダウンロード

○ デザイン

 次の図のようにコントロールを配置してください。

フォームデザイン
フォームデザイン

○ プログラム

 Buttonコントロールのクリック時の処理として次のプログラムを入力します。デザイナで配置したButtonコントロールをダブルクリックして、表示されるプログラムに記述をしてください。

  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2.  'Staticな変数を宣言
  3.  Static st As Integer = 0
  4.  'カウントアップ
  5.  st += 1
  6.  'ボタンに表示
  7.  Me.Button1.Text = st
  8. End Sub

○ 実行結果

実行結果
実行結果

○ 解説

 5行目でStatic変数を宣言しています。初めて変数を利用する際に初期化され、2回目以降は初期化されずにそのまま使用することができます。8行目でStatic変数を1ずつ増やしていますが、このプロシージャが呼び出されるたびに増えていきます。もしStatic変数ではなく普通の変数であれば毎回毎回初期化されるため、何度このプロシージャを呼び出しても「0 + 1」の結果しか出てきません。

 11行目では計算結果をボタンコントロールの見出しにセットしています。これにより、計算結果をボタンに表示して確認することができます。

前へ   次へ