Get ステートメント

プロパティの値を取得するための Get プロパティ プロシージャを宣言します。

[ <attributelist> ] [ accessmodifier ] Get()
    [ statements ]
End Get

指定項目

語句

定義

attributelist

省略可能です。「属性リスト」を参照してください。

accessmodifier

省略可能です。このプロパティの Get ステートメントか Set ステートメントの一方に指定できます。次のいずれかになります。

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

参照

処理手順

チュートリアル: クラスの定義 (Visual Basic)

関連項目

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

Property ステートメント

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

その他の技術情報

Visual Basic のオブジェクトとクラス