PrivateとDimの違い への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 ゆうと  (小学生) 投稿日時 2020/10/31 13:21:51
たしかに、これは僕も気になりました
だれか教えてください。
投稿者 m190  (社会人) 投稿日時 2012/6/17 14:02:40
> Dimには伝統の重みがあるのとDimがなくなったら気持ち的にVBではないような気がしてしまう
この一節、何だミョーに納得してしまいました。

とくに私は「何はともあれ、とりあえず Dim!」と、何やら居酒屋のビール(生中)と勘違いしてるような所がありまして。。。(汗
だって Dim だったら変数を、マウスのドラッグでプロシージャから出したり引っ込めたり出来きちゃうので、
とっても便利な、、、ってここら辺がそもそも、私の計画性のなさを物語ってるんだなってことに気が付きました。


> スコープをわかりやすくするためにも、上記のようなパターンでは
> Dim ではなく Private/Public などを使うことが望ましいです。
そうですよね、気を付けなきゃな、と反省はするのですが、
こういうのって継続的に意識し続けないと、なかなか体の方が覚えてくれません(涙

#やっぱり自己流のプログラミングって、事故の元なんでしょうね。。。
投稿者 ほわ  (社会人) 投稿日時 2012/6/16 14:45:23
すごいわかりやすかったです!

ありがとうございました(^^*)
投稿者 (削除されました)  () 投稿日時 2012/6/16 14:43:35
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/6/16 10:38:11
Dim は変数の宣言にしか使えませんが、
Private は、Sub や Function などに対しても使えます。(VB2 などは除く)

変数の仕様に限定してみると、Dim はプロシージャ内では利用できますが(ローカル変数)、
Private はプロシージャの外(クラスやモジュールレベルのフィールド)でしか使えません。

また、変数のスコープ(有効範囲)という点で見た場合の差異もあります。
Dim という宣言の場合、その記述位置によっては、Private 相当のスコープになることもあれば
Public になることもあります。

Public Structure 構造体
    Dim a As Integer    'これは Public a As Integer 
End Structure

Public Class クラス
    Dim b As Integer    'これは Private b As Integer 
End Class


そのため、スコープをわかりやすくするためにも、上記のようなパターンでは
Dim ではなく Private/Public などを使うことが望ましいです。
投稿者 るきお  (社会人) 投稿日時 2012/6/16 10:23:11
変数を宣言するときのPrivateとDimは同じ機能です。

Private X As Integer

という書き方は、
Private Dim X As Integer

の省略形なのです。
ただし、実際にPrivate Dim…と入力するとVBが勝手にDimを省いてしまうので簡単に試すことはできません。

一方、
Dim X As Integer

という書き方は適用範囲がPrivateであるとみなされるため、結局
Private Dim X As Integer

と同じ意味になります。

したがって適用範囲がPrivateの変数はPrivate X…と書いてもDim X…と書いても意味は同じになります。

SubやFunctionの中ではそもそもPrivateは使えないので、Private Dim…とは書けずDim…と書きます。

紛らわしいのでこのルールをもっとわかりやすいものに変えた方がいいのじゃないかと思うのですが、Dimには伝統の重みがあるのとDimがなくなったら気持ち的にVBではないような気がしてしまうのとで微妙です。

以上は変数を宣言するときの話に限定して説明しましたが、ほわさんの聞きたいことと合っていますでしょうか?

Privateは変数のほかにもConstやFunction、Subなどと組み合わせて使うこともよくあります。このほかのものと組み合わせることもあります。
投稿者 ほわ  (中学生) 投稿日時 2012/6/16 10:06:09
題名の通りです。

PrivateとDimの違いを教えてください。