重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

VB6ではイベント制御のため、共通モジュールに大域変数を
Public gFlag As Integer
のように記述していました。

最近になってVB.Netをはじめましたが、この大域変数がうまく動いてくれません。
とりあえずVB6の共通モジュールはクラスを追加して行うとあり、
クラスを追加して、そこで上記のようにPublicで宣言しました。

ところがFormのコードで使うと宣言されていませんと出ます。
そこで色々と調べてPublicは外部に公開されるメンバ??らしい
ということは分かったのですが、クラス自体さっぱりです。

とりあえずクラスのお勉強は後回しにするとして、
大域変数はどのようにすれば使えるようになるのか教えて下さい。

A 回答 (1件)

クラスではなくモジュールをプロジェクトに追加してください。


そこに pUblic 変数として定義すれば クラスではなくメインプログラムが終了するまで値は保存されます。
クラスは自分の処理が終わり解放されてしまうので当然PUBLICと宣言してもメモリーには保存されません。 だからクラスにpUblic 変数 を定義しても無意味です。
「スコープ 変数」 とか 「VB.net 標準モジュール 変数」などでGoogle で検索してみてください。

同じ質問 http://okwave.jp/qa1200905.html
があります。

ただし、スパゲッティプログラムの原因になりかねないのでできうる限りクラスに定義した変数で情報をやり取りできるように工夫してください。 変数は使いまわすようなことはなるべき避けるべきです。
バグの原因になります。
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。
なるほどモジュールというのはそうやって使う物ですか。

実はその前に散々モジュールというものをつつき回したんですが、
共通サブルーチンは1個しか置けないし何だろう??と思っていました。
大域変数を置く場所と考えれば良かったのですね。

お礼日時:2009/11/28 06:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!