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

参照

処理手順

方法 : フィールドおよびプロパティをクラスに追加する

参照

Set ステートメント (Visual Basic)

Property ステートメント

Exit ステートメント (Visual Basic)