Get ステートメント
更新 : 2007 年 11 月
プロパティの値を取得するための Get プロパティ プロシージャを宣言します。
[ <attributelist> ] [ accessmodifier ] Get()
[ statements ]
End Get
指定項目
attributelist
省略可能です。「属性リスト」を参照してください。accessmodifier
このプロパティでは、Get ステートメントと Set ステートメントのうちの 1 つについては、指定を省略できます。次のいずれかを指定できます。Visual Basic でのアクセス レベル を参照してください。
statements
省略可能です。Get プロパティ プロシージャが呼び出されたときに実行する、1 つ以上のステートメントを指定します。End Get
必ず指定します。この Get プロパティ プロシージャの定義を終了します。
解説
WriteOnly でマーク付けされていないすべてのプロパティに、Get プロパティ プロシージャが必要です。Get プロシージャは、プロパティの現在の値を取得するために使用します。
式でプロパティの値が必要になると、Visual Basic が自動的にプロパティの Get プロシージャを呼び出します。
プロパティ宣言の本体には、プロパティの Get プロシージャと Set プロシージャだけを、Property ステートメントと End Property ステートメントの間に定義できます。このプロシージャ以外は何も格納できません。特に、プロパティの現在の値を格納できないことに注意してください。この値は、プロパティの外側に格納する必要があります。その理由は、どちらか一方のプロパティ プロシージャの内部にこの値を格納すると、もう一方のプロパティ プロシージャからアクセスできなくなるためです。この値は、プロパティと同じレベルで宣言された Private (Visual Basic) 変数に格納するという方法が一般的です。Get プロシージャは、それが適用されるプロパティの内側に定義する必要があります。
Get プロシージャの既定のアクセス レベルは、accessmodifier を Get ステートメントで使用しない限り、その包含プロパティのアクセス レベルになります。
規則
アクセス レベルの混在 読み書き可能なプロパティを定義する場合、必要であれば Get プロシージャと Set プロシージャのどちらかに限り、プロパティとは異なるアクセス レベルを指定できます。これを指定する場合は、プロシージャにプロパティよりも制限の高いアクセス レベルを指定する必要があります。たとえば、プロパティを Friend で宣言する場合、Get プロシージャを Private で宣言できますが、Public では宣言できません。
ReadOnly プロパティを定義する場合、プロパティは Get プロシージャだけで機能します。Get に違うアクセス レベルを宣言すると、プロパティに 2 つのアクセス レベルを設定することになるため宣言できません。
戻り値の型Property ステートメントには、プロパティが返す値のデータ型を宣言できます。Get プロシージャは自動的にそのデータ型を返します。任意のデータ型の他に、列挙値、構造体、クラス、またはインターフェイスの名前を指定できます。
Property ステートメントに returntype が指定されなければ、プロシージャは Object を返します。
動作
プロシージャからの戻りGet プロシージャから呼び出しコードに制御が戻るとき、プロパティの値を要求したステートメントの内部から実行が継続します。
Get プロパティ プロシージャは Return ステートメント (Visual Basic)を使って値を返すか、またはプロパティ名に戻り値を代入して値を返すことができます。詳細については、「Function ステートメント (Visual Basic)」の "戻り値" を参照してください。
Exit Property ステートメントと Return ステートメントは、プロパティ プロシージャを直ちに終了します。プロシージャの任意の場所に、Exit Property ステートメントと Return ステートメントを何度でも定義できます。また、Exit Property ステートメントと Return ステートメントを混在して使用できます。
戻り値Get プロシージャから値を返すには、プロパティ名に値を代入するか、または Return ステートメント (Visual Basic) に値を指定します。Return ステートメントは Get プロシージャの戻り値を代入すると同時に、プロシージャを終了します。
プロパティ名に値を代入せずに Exit Property を使用すると、Get プロシージャは、そのプロパティのデータ型の既定値を返します。詳細については、「Function ステートメント (Visual Basic)」の "戻り値" を参照してください。
次の例は、読み取り専用の quoteForTheDay プロパティからプライベート変数 quoteValue に格納された値を返すための、2 つの方法を示しています。
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get quoteForTheDay = quoteValue Exit Property End Get End Property
ReadOnly Property quoteForTheDay() As String Get Return quoteValue End Get End Property
使用例
次の例は、Get ステートメントを使って、プロパティの値を返します。
Class propClass
' Define a private local variable to store the property value.
Private currentTime As String
' Define the read-only property.
Public ReadOnly Property dateAndTime() As String
Get
' The Get procedure is called automatically when the
' value of the property is retrieved.
currentTime = CStr(Now)
' Return the date and time As a string.
Return currentTime
End Get
End Property
End Class