• ベストアンサー

プロパティについて

長年他の言語をやってきまして、VB.NETでピンと来ていない点があります。どなたかご教授ください。 あるクラスのプロパティとセッターゲッターについて2通りの 書き方ができると思っています。 以下の1、2の違いはありますでしょうか?入門書やネット上を検索 すると1の例で記述されますが、経験上2のような書き方をしてしまうため気になっております。 1. Private _hoge As Integer = 0 Public Property Hoge() As Integer  Get   Return _hoge  End Get  Set(ByVal Value)   _hoge = Value  End Set End Property 2. Private _hoge As Integer = 0 Public Function getHoge() As Integer  Return _hoge End Function Public Sub setHoge(ByVal val As Integr)  _hoge = val End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

プロパティは,たとえばXMLシリアライズをする場合にシリアライズ対象になります (メソッドは対象外です)。 また,データバインド機構などでは,プロパティとはバインドさせられますが,メソッドとはバインドさせられません。 プロパティを使うかメソッドを使うかについては,MSのガイドラインがあります。 http://msdn.microsoft.com/ja-jp/library/ms229054.aspx この場合だと,プロパティを使う選択が妥当でしょう。 なお,2に関しては,大文字の使用規則 http://msdn.microsoft.com/ja-jp/library/ms229043.aspx に反するので,そのまま使うことはお勧めしません。

sakittyo
質問者

お礼

ご回答いただきましてありがとうございます。 なるほど、プロパティでないとシリアライズ、バインド時に 影響ありと。 大文字の使用規則、勉強になりました。 他言語チックに記述してしまいました。 ありがとうございました。

その他の回答 (1)

  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.1

前者は、同じ名前の手続きで、setterとgetterの両方を利用できます。 また、イコールで結ぶだけで利用が可能ですね。 ex. Hoge = 20 Dim suuji As Integer = Hoge 後者の方は、名前が違うので、別々に書く必要があります。 また、setは引数をカッコに入れる必要があります。 ex. setHoge(20) Dim suuji As Integer = getHoge  'Dim suuji As Integer = getHoge() でも、強いていえばこれくらいのことかも知れません。

sakittyo
質問者

お礼

早々のご回答ありがとうございます。 > 前者は、同じ名前の手続きで、setterとgetterの両方を利用できます。 なるほど。変数を扱うようにセットもゲットも行うと。 特に大きな違いはないが、VB.NETのお作法的には前者ということでしょうかね?

関連するQ&A

専門家に質問してみよう