変数のスコープ

 プログラムの中で変数を宣言する位置によって、使用できるかできないかが決まります。つまり、変数には有効範囲があります。これを変数のスコープと呼びます。大きく分けて次の2つの種類に分けられます。

■ ローカル変数

 プロシージャの内部などで宣言される変数です。プロシージャなどの処理が終わると、変数も破棄され、使用できなくなります。次回、同じプロシージャが呼び出されると、再び新たに変数が用意され、処理が終わると破棄されます。

 例:

ローカル変数
ローカル変数

■ メンバ変数

 プロシージャの外で宣言される変数です。クラス(後で学習します。)が存在している間、その変数は使用できます。

 例:

メンバ変数
メンバ変数

 上記のように、変数の宣言を記述する位置によって、使用できるかどうかが変わってきます。また、ローカル変数で、呼び出すたびに同じ変数の値を使用する方法があります。これを、「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行目では計算結果をボタンコントロールの見出しにセットしています。これにより、計算結果をボタンに表示して確認することができます。

前へ   次へ