こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プロパティープロシージャーについて

簡単な年齢計算プログラムです。
書籍のサンプルなのでうまく動いています。
クラスの変数がPrivate strnameだったりするので
そこへアクセスするためにプロパティプロシージャーを使っているというところまでは
判ったような気がしますが、
getとsetの関係がわかりません。
まず、
1.何をGetしているのか
2.なぜGetが先に来るのか、
3.Setの前にGetのReturnで返してますが実態は何を返しているのでしょうか?普通に考えると逆のような気がします。
根本がわかっていないのだと思いますが、どなたかお教え願います。

呼ぶ方
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim person As New Class1()
person.Name = TextBox1.Text
person.Birthday = DateTimePicker1.Value.Date
MessageBox.Show(person.Name & "さんの年齢は" & person.GetAge())
End Sub

クラスの方。
Public Class Class1
Private strname As String
Private datBirthday As Date
Public Property Name() As String
Get
Return strname
End Get
Set(ByVal pro_name As String)
strname = pro_name
End Set
End Property

Public Property Birthday() As Date
Get
Return datBirthday
End Get
Set(ByVal pro_birthday As Date)
datBirthday = pro_birthday
End Set
End Property
Public Function GetAge() As Integer
Return Int(DateTime.Today.Subtract(Birthday).Days / 365.25)
End Function
End Class

投稿日時 - 2010-01-14 17:51:30

QNo.5592947

困ってます

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

とりあえず Button1_Click イベントにブレークポイントを設定。
デバッグを開始して Button1 をクリックすると Button1_Click で一時停止する。
コードを右クリックして [プロパティ演算子をステップ オーバーする] という項目をクリックする。(チェックが入っていると思うので、クリックするとチェックが外れる)
以降、[F11] でステップ実行すると Class1 の処理にも入っていけます。

投稿日時 - 2010-01-15 20:30:57

お礼

教えていただいたやり方で、プロパティプロシージャーにも入っていけました。助かりました。ありがとうございます。

投稿日時 - 2010-01-18 13:48:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

1.何をGetしているのか
Getというのは、呼び出し側からみてGetという意味になります。
ステップ実行するとわかりますが
xxx=person.name
などのようにしたときに、
Getの方のプロシージャが実行され、Returnしている内容(strname)が取得されます。
Setは逆に
person.name=xxx
などのようにしたときに実行されます。

2.なぜGetが先にくるのか
別にどちらを先に記述しても問題ありません。

投稿日時 - 2010-01-14 20:45:59

お礼

回答ありがとうございます。
しかしながらxxx=person.nameにしてステップ実行しても
Public Property以下実行されません。
というか、どのかたちでもPublic Property以下の実行がみれません。
やりかたが悪いのでしょうか?

投稿日時 - 2010-01-15 09:21:36

あなたにオススメの質問