タイトル : [解決] プロパティの定義方法で疑問 投稿日 : 2008/06/30(Mon) 09:52 投稿者 : ダンボ
魔界の仮面弁士さん、いつもどうも有り難うございます。 よく分かりました。 何がどう分かったのかを(突っ込みどころ満載で)記してみましたので更にご指摘があればよろしくお願いします。 教訓1.クラス文の直下に書けるものは宣言(定義)文だけ 自己流解釈 ・クラス文はクラスの(型)定義をするものであり、実行されるわけではない。直下に実行文を 書いても実行するタイミングは無いから文法エラーにしておいたほうが良い。 ・そう言えば、SubもFunctionもPropertyもDimも宣言(定義)文だった。 ・ならば、Public Dim ABC As XXX、Private Dim ABC As XXXと書ける筈だ。しかし Dimだけは省略必須らしくPublic ABC As XXX、Private ABC As XXXと書き直された。 教訓2.PublicクラスのPublicなフィールド変数はプロパティのように使える。 自己流解釈 ・誰からも存在が認識できるクラスオブジェクトの誰からも読み書きできる変数だからそうなる。 ・クラスが構造体からの発展だと考えれば当たり前。 ・よってPublicなフィールド変数は(広義のプロパティ)と考えても良い。 ・では本当のプロパティのメリットは、 (1)ReadOnly、WriteOnlyなどの制限を設けることができる。 (2)ロジックを含めることができる。下記の例はフィールド変数への書き込みではできない。 Public Property Modified() As Boolean Get Return innerModified End Get Set(ByVal value As Boolean) innerModified = value If value Then innerProfile.LastModifyDate = Now RaiseEvent Updated(Me, New EventArgs) End If End Set End Property > Public な場合は、常にプロパティを使用すべきです。 > フィールド変数を Public にするのは、ReadOnly な場合だけにしておきましょう。 →このお作法のメリットが理解できません。(泣) |