目次:
- 変数の値を照会または変更したいが、その変数があなたにアクセス可能かどうかは、そのスコープによって異なります。たとえば、同じプロシージャ内から常に変数にアクセスできます(関数、サブルーチン、およびイベントはすべてプロシージャです)。
- 単一のプロシージャ内にのみ存在する変数を
ビデオ: Visual Basic 入門:LINQとは|Lynda.com 日本版 2024
VBに適用されます。 NETプログラムは、米国が州、郡、および都市に分かれるのと同様に、ゾーンに細分されています。法執行機関がさまざまな規模の管轄区域(市の警官、州の兵士、FBI、どこでも行くことができる)と同じように、VB。 NETのプログラミングの行には影響力の範囲があります。 スコープ と呼ばれるこの影響範囲は、主に変数に適用されます(ただし、プロシージャ(サブシステムと関数)およびクラス全体にも適用できます)。
<!変数へのアクセス変数の値を照会または変更したいが、その変数があなたにアクセス可能かどうかは、そのスコープによって異なります。たとえば、同じプロシージャ内から常に変数にアクセスできます(関数、サブルーチン、およびイベントはすべてプロシージャです)。
このコードの動作を確認するには、コードモジュールに次のように入力します。
Private Sub Form1_Load(ByVal送信者としてSystemオブジェクト、ByVal e As System。EventArgs)MyBaseを処理します。ロード
Dim N As String = "This"
MsgBox(N)
End Sub
Thisを表示します。
Public Sub TryIt()
MsgBox(N)
End Sub
変数Nの下に鋸歯状の線があることに注意してください。 TryItサブ。ノコギリ線とVBの上にマウスポインタを置いてください。 NETは、名前 'N'が宣言されていないことを示すエラーメッセージを表示します。
<! - 3 - >
このエラーメッセージは、TryItサブ(Public SubとEnd Subの間)のコード行が変数Nを読み取る(アクセスする)か書き込む(変更する)ことができないことを意味します。 Dimコマンド)を別のプロシージャで実行するので、N(そのアクセシビリティの範囲)のスコープは同じプロシージャ内のコード行に制限されます。Dimが最も一般的に使用されますが、静的、公開、保護、フレンド、共有、保護されたフレンド、プライベートの7つの追加の宣言コマンドを使用できます。これらの追加のコマンドはスコープを指定します(プログラムのどこから変数にアクセスできるか)。
プロシージャ内で変数を宣言すると、そのプロシージャ内でのみ変数が機能することに注意してください。プログラムがプロシージャ(またはイベント)を実行すると、End Sub行が実行されるとすぐに、変数は有効になり、そのことを行い、その後消滅します(消えます)。
変数がローカルの場合
単一のプロシージャ内にのみ存在する変数を
ローカル変数と呼びます。 ローカル変数には、あなたが覚える必要のある2つの性質があります。 独自のプロシージャの外部にプログラミングすることは、値を読み取るか値を変更するためにそれらとやり取りできません。
- そのスコープは、独自の手順に限定されています。 VBが存在するプロシージャの実行を終了すると、その値は蒸発する。そのプロシージャがもう一度実行されると、ローカル変数に含まれていた値はなくなります。手順の1つの実行は、その存続期間です。
- ローカル変数の値を保持したい場合があります。このような場合、DimコマンドではなくStaticコマンドを使用します。 Private Sub Form1_Load(ByVal送信者としてシステムオブジェクト、ByVal eとしてシステム。EventArgs)MyBaseを処理します。この例では、End Subを実行すると、変数nはその値を失います。 ただし、変数xはプログラムが終了するまでその値を保持します。これを置くもう1つの方法は、ローカル変数でStaticコマンドを使用すると、その変数の値がアプリケーションの存続期間にわたって保持されます。 (ライフタイムとは、何かがプログラム内に存在する時間を意味します)。
2つのコマンドボタンをフォームに配置し、プログラムを実行してCommand1を最初にクリックしてCommand2をクリックすると、この次のプログラム?
Private Sub Button1_Click(System。。::。SystemとしてのByVal送信者。EventArgs)Button1を処理します。
Dim X As Integer
X = 12
X = X + 5
End Sub
Private Sub Button2_Click(ByVal送信者としてシステムオブジェクト、ByValシステムとしてのEventArgs)Button2を処理します。 。
Dim X As Integer
MsgBox(X)
End Sub
メッセージボックスには何も表示されません。 Command1のClickイベントの変数Xは、Command2のClickイベントのXとはまったく異なる変数です。彼らは範囲のローカルであり、単に相互に関係がありません。ブロンクスに住んで決して会うことのないマイクという名前の二人以上の人。
しかし、これらのプロシージャの両方で同じ変数にアクセスして操作できるようにするにはどうすればよいでしょうか?これを行うには、プロシージャの外で変数を定義します。それを試してみてください。コードウィンドウの最初のプロシージャ(Private Sub Form1_Load行のすぐ上)のすぐ上をクリックして、そこに挿入カーソルを移動します。
Dim x As Integer
これは、フォーム全体のスコープを指定したい変数、つまりそのフォーム内のすべてのプロシージャを許可する場所です(Form1 、この場合)変数を読み込んで変更することができます。 (VB.NETの前に一般宣言領域と呼ばれていたフォーム全体の変数を置く領域)
ここで、そのX変数はすべてのSubやその他のプロシージャの上に同じプログラムを実行し、Command1をクリックしてからCommand2をクリックすると、表示したい結果が表示されます.17を選択します。スコープ内でフォーム全体になるようにXを宣言すると、2つのボタンがその変数Xにアクセスできます。これらの2つのボタンイベント内でXを宣言した2つのDimステートメントを削除します。ここで、X = X + 5とMsgBox(X)は両方ともXという名前の同じ変数を参照します。
変数にはフォーム全体の有効範囲があり、その形式のすべてのプロシージャで使用できます。ただし、プロジェクトの他の形式の手順には使用できません。