Get ステートメント

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

構文

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

指定項目

用語 定義
attributelist 任意。 「属性リスト」を参照してください。
accessmodifier このプロパティの Get および Set ステートメントのいずれかで、省略可能です。 次のいずれかの値を指定します。

- Protected
- Friend
- Private
- Protected Friend

Access levels in Visual Basic」を参照してください。
statements 任意。 Get プロパティ プロシージャが呼び出されたときに実行される 1 つ以上のステートメント。
End Get 必須です。 Get プロパティ プロシージャの定義を終了します。

Remarks

プロパティが WriteOnly とマークされている場合を除き、すべてのプロパティには Get プロパティ プロシージャが必要です。 Get プロシージャは、プロパティの現在の値を返すために使用します。

Visual Basic では、式でプロパティの値が要求されると、プロパティの Get プロシージャが自動的に呼び出されます。

プロパティ宣言の本体には、Property ステートメントEnd Property ステートメントの間に、プロパティの GetSet のプロシージャのみを含めることができます。 これらのプロシージャ以外のものを格納することはできません。 特に、プロパティの現在の値を格納することはできません。 この値は、プロパティの外部に格納する必要があります。それをいずれかのプロパティ プロシージャの内部に格納した場合、他のプロパティ プロシージャからアクセスできなくなるためです。 通常の方法は、プロパティと同じレベルで宣言された Private 変数に値を格納することです。 Get プロシージャは、適用先のプロパティの内部で定義する必要があります。

Get ステートメントで accessmodifier を使用しない限り、Get プロシージャは既定で、それを含んでいるプロパティのアクセス レベルに設定されます。

ルール

  • 混合アクセス レベル。 読み取り/書き込みプロパティを定義する場合は、必要に応じて、Get または Set のいずれかのプロシージャに対して異なるアクセス レベルを指定できますが、両方に対して指定することはできません。 この場合、プロシージャのアクセス レベルは、プロパティのアクセス レベルよりも制限されている必要があります。 たとえば、プロパティが Friend として宣言されている場合は、Get プロシージャを、Public ではなく Private として宣言できます。

    ReadOnly プロパティを定義する場合、Get プロシージャはプロパティ全体を表します。 Get に対して異なるアクセス レベルを宣言することはできません。それによって、プロパティに 2 つのアクセス レベルが設定されるためです。

  • 戻り値の型。 Property ステートメントでは、それによって返される値のデータ型を宣言できます。 Get プロシージャでは、そのデータ型が自動的に返されます。 任意のデータ型や、列挙、構造体、クラス、またはインターフェイスの名前を指定できます。

    Property ステートメントで returntype を指定していない場合、プロシージャによって Object が返されます。

動作

  • プロシージャからの復帰。 Get プロシージャから呼び出し元のコードに戻ると、そのプロパティ値を要求したステートメント内で実行が続行されます。

    Get プロパティ プロシージャでは、Return ステートメントを使用するか、プロパティ名に戻り値を代入することによって、値を返すことができます。 詳細については、「Function ステートメント」の "戻り値" に関する記述を参照してください。

    Exit Property および Return ステートメントでは、プロパティ プロシージャがすぐに終了します。 任意の数の Exit Property および Return ステートメントをプロシージャ内の任意の場所に記述でき、Exit Property ステートメントと Return ステートメントを混在させることができます。

  • 戻り値。 Get プロシージャから値を返すには、プロパティ名に値を代入するか、Return ステートメントに値を含めることができます。 Return ステートメントでは、Get プロシージャに戻り値を代入すると同時に、プロシージャが終了します。

    プロパティ名に値を代入せずに、Exit Property を使用すると、Get プロシージャからは、プロパティのデータ型の既定値が返されます。 詳細については、「Function ステートメント」の "戻り値" に関する記述を参照してください。

    次の例では、読み取り専用プロパティ 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

関連項目