トップ回答者
グローバル変数について

質問
回答
-
Danieruさんが言われているような意味でのグローバル変数であれば、変数にPublicを付けたものになるでしょう。ただし、オブジェクト指向であるため、Form2でForm1のインスタンスを取得していなければなりません。
Sharedとはあるクラスのインスタンス全てにおいて、共有されることを意味します。
通常、あるクラスのインスタンスが複数あったとすれば、それぞれのインスタンスにおける変数は全て独立しています。しかし、その変数にSharedを付ければ、全てのインスタンスにおける変数は共有されます。つまり、一つしかありません。
hogeクラス hogeインスタンス1 変数moge
hogeインスタンス2 変数moge
hogeインスタンス3 変数moge
hogeインスタンス4 変数moge
hogeインスタンス5 変数moge
上の5つの変数mogeはそれぞれ独立しており、5つ存在する。
hogeクラス hogeインスタンス1 Shared 変数moge
hogeインスタンス2 Shared 変数moge
hogeインスタンス3 Shared 変数moge
hogeインスタンス4 Shared 変数moge
hogeインスタンス5 Shared 変数moge
上の変数mogeは共有されており、1つしか存在しない。
このSharedの仕組みを利用してModuleに変数を宣言し(自動的にSharedになる)、そこに値を出し入れすることにより各クラス間で共有を実現する方法もあります。
すべての返信
-
SharedやModuleについて調べてみて下さい。ただ、グローバル変数をあまり多用するとコードの見通しが悪くなります。グローバル変数には一定の名前付け規則などを適用して、それがグローバル変数であることがすぐにわかるようにした方が良いでしょう。以下も参考にして下さい。
第7回 VBのモジュールはオブジェクト指向に不要?
http://www.atmarkit.co.jp/fdotnet/vbcheer/vbchher07/vbcheer07.html -
Danieruさんが言われているような意味でのグローバル変数であれば、変数にPublicを付けたものになるでしょう。ただし、オブジェクト指向であるため、Form2でForm1のインスタンスを取得していなければなりません。
Sharedとはあるクラスのインスタンス全てにおいて、共有されることを意味します。
通常、あるクラスのインスタンスが複数あったとすれば、それぞれのインスタンスにおける変数は全て独立しています。しかし、その変数にSharedを付ければ、全てのインスタンスにおける変数は共有されます。つまり、一つしかありません。
hogeクラス hogeインスタンス1 変数moge
hogeインスタンス2 変数moge
hogeインスタンス3 変数moge
hogeインスタンス4 変数moge
hogeインスタンス5 変数moge
上の5つの変数mogeはそれぞれ独立しており、5つ存在する。
hogeクラス hogeインスタンス1 Shared 変数moge
hogeインスタンス2 Shared 変数moge
hogeインスタンス3 Shared 変数moge
hogeインスタンス4 Shared 変数moge
hogeインスタンス5 Shared 変数moge
上の変数mogeは共有されており、1つしか存在しない。
このSharedの仕組みを利用してModuleに変数を宣言し(自動的にSharedになる)、そこに値を出し入れすることにより各クラス間で共有を実現する方法もあります。
-