質問: 開発環境はvb.netです public変数についてどのようなところで使用できるのか教えてください。
回答: public変数はプロシージャ外部に配置した変数で宣言できます。 他のモジュールやクラスから読み書きしたい変数にpublicキーワードを含めます。 詳細は方法: 変数の可用性を制御する (Visual Basic)をご参照ください。 要するにpublic変数なら外部からアクセスできますが、private変数ではアクセスできない制約が付きます。 ならばすべての変数をpublicにした方が便利だと思いませんか? しかしプログラミングの教科書では「できるだけprivateやfriendなどを使って、変数に不要なアクセスはできないようにすべき」と書かれていることがほとんどです。 上記のことを「変数のスコープを絞る」と言います。 例えばプロシージャ内部でForループしたい時に使う変数`i`の値がおかしいというエラーが発生したとします。 この時に、変数`i`がprivateならばそのプロシージャ内部で`i`を使っている箇所を調べるだけで済みますが、publicの場合はどこから書き換えられているのか分からないのでアプリケーション全体で`i`を使っているところを見つけ出さなくてはいけません。 もしもプロシージャAとプロシージャBで変数`i`を使いまわしていて、Aでループしている最中にBでループする処理が始まると`i`がリセットされることがエラーの原因ならば、エラーの再現や修正が難しくなることがあります。 どのようなところで、どのような時にpublic変数を使うのかについては、複数のモジュールなどで変数を共有すべきところで適切に使うことが綺麗なコーディングをするために求められます。 他の方の回答にあるように、public/privateを理解した次のステップとして`Get`、`Set`というProperty プロシージャ (Visual Basic)を使うのが望ましいです。 プロパティを使うと、他のモジュールから参照だけ許可する、書き換えられる値の範囲を制限する、などの細かい制御ができるようになります。