none
C++/CLIのpropertyの有用性について RRS feed

  • 質問

  •  

    VC6.0からC++/CLIに移行しようとしています。

     

    C#もそうなんですが、property構文(getter/setterをまとめて変数のように定義する)を使用すると、パブリックメンバなのか、プロパティなのかわかりにくいです。

     

    property構文の良い点をご存知の方いらっしゃいましたら教えて頂けませんでしょうか?

     

    2007年7月13日 13:22

回答

  • 一応、このあたりは MSDN でもガイドラインに書いてあります。
    ただどうするかは個人の自由です。
    私はガイドラインもしくは BCL のポリシに従うようにしています。
    2007年7月16日 12:40

すべての返信

  • 値をセットしようとしたタイミングで、何も考えずとも値チェックが可能。
    新しい値がセットされた時に、何も考えずともそれに伴う副作用を起こすことが可能。(たとえば、BackColor)
    自作コントロールの場合、プロパティでないと画面デザイナから編集できない。
    読み取り専用、または読み取り時書き込み時にアクセス修飾子を分けることができる。
    その他、リフレクションの都合など....

    くらいでしょうか。
    2007年7月13日 15:07
  •  

    回答ありがとうございます。

    とても参考になりました。

     

    値をセットしようとしたタイミングで、何も考えずとも値チェックが可能。
      >新しい値がセットされた時に、何も考えずともそれに伴う副作用を起こすことが可能。(たとえば、BackColor)

    おお、なるほど。

     

    自作コントロールの場合、プロパティでないと画面デザイナから編集できない。

    基本的にgetter,setterがあるようなメンバに対してはproperty使用するというのが言語として推奨されている

    のでしょうか?逆に、publicメンバは普段余り利用されていない??

     

    2007年7月14日 5:54
  •  あのにまうす さんからの引用
    逆に、publicメンバは普段余り利用されていない?

    ちょっと質問の意味がわかりません。 Public メンバとは、Public メソッド、Public プロパティ、Public フィールド、Public イベントなどなどをひっくるめたものを指します。 たとえば、BackColor プロパティも Public メンバです。

    もし、Pubic フィールドという意味だとすれば使わないでしょうね。 Pubic フィールドとして使うのは、Public 定数メンバおよび、静的な読み取り専用フィールドくらいです。
    2007年7月14日 9:38
  •  

    失礼致しました。Pubic フィールドの意味で書いていました。

     

    >もし、Pubic フィールドという意味だとすれば使わないでしょうね。 Pubic フィールドとして使うのは、

    >Public 定数メンバおよび、静的な読み取り専用フィールドくらいです。
     

    そういう使い分けがあるのですね。

    理解できました。

     

    2007年7月14日 12:17
  • >もし、Pubic フィールドという意味だとすれば使わないでしょうね。 Pubic フィールドとして使うのは、

    >Public 定数メンバおよび、静的な読み取り専用フィールドくらいです。

     

    ま、いつも議論になるわけですが、使う人も多いです。

    読み取り側が勝手にプロパティしか相手にしていないものもあるので、プロパティにしなくちゃいけない場合もありますが、そうでない場合にわざわざフィールド→プロパティ変換する必要のないことも多いので、何が違うかをよく理解してお使いください。

    2007年7月16日 7:39
  • 一応、このあたりは MSDN でもガイドラインに書いてあります。
    ただどうするかは個人の自由です。
    私はガイドラインもしくは BCL のポリシに従うようにしています。
    2007年7月16日 12:40