タイトル : Re^3: [解決] プロパティの定義方法で疑問 投稿日 : 2008/06/30(Mon) 13:31 投稿者 : 魔界の仮面弁士
>>> Dimだけは省略必須らしく 実は、必須ではありません。 正確には「省略することが推奨されている」です。 言語仕様上は、Public Dim a As Integer という表現でも許容されますので、 エディタの自動補正をオフにして、Public Dim と書いたとしても、コンパイル可能です。 その逆に「省略しないことが推奨される」例としては、 If True Then に対する If True という表記があります(Then は省略可能です)。 この他には、ByVal キーワードなども省略しないことが推奨されていますね。 >>> Public な場合は、常にプロパティを使用すべきです。 >>> フィールド変数を Public にするのは、ReadOnly な場合だけにしておきましょう。 >> →このお作法のメリットが理解できません。(泣) 一般論から言うと、フィールド変数というのは、クラス自身以外から 外部操作される事をあまり想定されていない場合が多いものです。 たとえば、Form2 に TextBox を貼っておき、それを Form1 側から Form2.Show() Form2.TextBox1 = Nothing Form2.TextBox2 = Me.TextBox1 のような処理が行われたとしましょう。 こんな事をされたら、Form2 側が困った事態になりますよね。 それゆえ、フィールド変数はできるだけ公開せず、公開するのであれば、 外から操作できないように ReadOnly にする事が推奨されます。 一方、プロパティとして公開されている場合は、通常それらは、 設計当初から、クラス外部からの操作が考慮されている場合が殆どです。 >>> ・では本当のプロパティのメリットは、 その他には、 (3) Get/Set それぞれのアクセス レベルを変更する事によって、 外部からは ReadOnly、内部では Read/Write 可能とすることもできる。 とか。 > 理解しました。このせいかどうかは知りませんが、 >「プロパティの一覧」には列挙されないくせに実際は使えるプロパティがありますね。 それは別の話だったりします。 プロパティには、プロパティ一覧に表示させるか、入力ヒント(IntelliSense)に 表示させるかどうかを制御するための属性を付けることができるのです。 その逆に、実際には存在しないのに、プロパティグリッドには表示される物もあります。 たとえば、コントロールの GenerateMember プロパティや Modifiers プロパティなどが それにあたります。(これらのプロパティは、デザイナによって提供されます) |