tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: [解決] プロパティの定義方法で疑問
投稿日: 2008/06/30(Mon) 10:42
投稿者よねKEN
> > Public な場合は、常にプロパティを使用すべきです。
> > フィールド変数を Public にするのは、ReadOnly な場合だけにしておきましょう。
> →このお作法のメリットが理解できません。(泣)

メリットというよりそうしておかないとデメリットがある、
といった方がよいかもしれません。
先の魔界の仮面弁士さんの投稿にある以下の部分がそれです。

> 使い方が同じだから、どちらでも同じ機能であるかのように見えてしまいますが、
> 後から実装方法を変えるのは、互換性が失われるので避けた方が良いかも知れません。
> たとえば、データバインドなどのように、リフレクションによる実装が行われて
> いる場合には、クラス側にはフィールド変数ではなく、プロパティとしての実装が
> 求められる事もあったりします。

あるクラスを普通に利用する立場から人が見た場合、
フィールドとプロパティは同じ外見を持つので、
まったく同じように見えますし扱えます。
普段は特にそれで問題はありません。

しかし、exeやdllのバイナリデータ上ではフィールドとプロパティは区別されており、
別々のものであるために問題になる場面があります。
その一つはリフレクションですが、この技術は開発環境(VisualStudio)や開発補助ツール、
クラスライブラリなどで使われます。その場合に、プロパティに対して何かを行う
というように開発されることが多いので、フィールドでなく、プロパティで実装して
おいた方が無難ということです。

リフレクションの1例としては、Visual Studioのプロパティウィンドウがわかりやすいでしょうか。
画面にTextBoxを配置したら、プロパティウィンドウにその設定内容が表示され、変更したりできます。
これはSystem.Windows.Forms.dllの中のTextBoxクラスをリフレクションで調査して、
プロパティの一覧を列挙していると思われます。
#例には挙げていますが、このプロパティウィンドウの場合に、
#フィールドだと列挙されなくて期待しない結果になるかどうかは確認していません。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。