Property ステートメントProperty Statement

プロパティの名前、およびプロパティの値を格納および取得するために使用されるプロパティプロシージャを宣言します。Declares the name of a property, and the property procedures used to store and retrieve the value of the property.

構文Syntax

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

指定項目Parts

  • attributelist

    任意。Optional. このプロパティまたは Get または Set プロシージャに適用される属性の一覧。List of attributes that apply to this property or Get or Set procedure. 属性リスト」を参照してください。See Attribute List.

  • Default

    任意。Optional. このプロパティが、定義されているクラスまたは構造体の既定のプロパティであることを指定します。Specifies that this property is the default property for the class or structure on which it is defined. 既定のプロパティはパラメーターを受け取る必要があり、プロパティ名を指定せずに設定および取得できます。Default properties must accept parameters and can be set and retrieved without specifying the property name. プロパティを Defaultとして宣言する場合、プロパティまたはプロパティプロシージャのいずれかで Private を使用することはできません。If you declare the property as Default, you cannot use Private on the property or on either of its property procedures.

  • accessmodifier

    Property ステートメントでは省略可能で、Get ステートメントと Set ステートメントのうちの1つでも指定できます。Optional on the Property statement and on at most one of the Get and Set statements. 次のいずれかになります。Can be one of the following:

    Visual Basic でのアクセス レベル」を参照してください。See Access levels in Visual Basic.

  • propertymodifiers

    任意。Optional. 次のいずれかになります。Can be one of the following:

  • Shared

    任意。Optional. Shared」を参照してください。See Shared.

  • Shadows

    任意。Optional. Shadows」を参照してください。See Shadows.

  • ReadOnly

    任意。Optional. ReadOnly」を参照してください。See ReadOnly.

  • WriteOnly

    任意。Optional. WriteOnly」を参照してください。See WriteOnly.

  • Iterator

    任意。Optional. Iterator」を参照してください。See Iterator.

  • name

    必須。Required. プロパティ名。Name of the property. 宣言された要素の名前」を参照してください。See Declared Element Names.

  • parameterlist

    任意。Optional. このプロパティのパラメーターを表すローカル変数名の一覧と、Set プロシージャの追加パラメーター。List of local variable names representing the parameters of this property, and possible additional parameters of the Set procedure. パラメーターリスト」を参照してください。See Parameter List.

  • returntype

    Option StrictOnの場合は必須です。Required if Option Strict is On. このプロパティによって返される値のデータ型。Data type of the value returned by this property.

  • Implements

    任意。Optional. このプロパティが1つ以上のプロパティを実装することを示します。各プロパティは、このプロパティのクラスまたは構造体を含むインターフェイスで定義されています。Indicates that this property implements one or more properties, each one defined in an interface implemented by this property's containing class or structure. Implements ステートメント」を参照してください。See Implements Statement.

  • implementslist

    Implements を指定する場合は、必ず指定します。Required if Implements is supplied. 実装されているプロパティの一覧。List of properties being implemented.

    implementedproperty [ , implementedproperty ... ]

    implementedproperty の構文と指定項目は次のとおりです。Each implementedproperty has the following syntax and parts:

    interface.definedname

    要素Part 説明Description
    interface 必須。Required. このプロパティのクラスまたは構造体によって実装されるインターフェイスの名前。Name of an interface implemented by this property's containing class or structure.
    definedname 必須。Required. プロパティが定義されている名前 interfaceです。Name by which the property is defined in interface.
  • Get

    任意。Optional. プロパティが ReadOnlyとしてマークされている場合は必須。Required if the property is marked ReadOnly. プロパティの値を返すために使用される Get プロパティプロシージャを開始します。Starts a Get property procedure that is used to return the value of the property. Get ステートメントは、自動実装プロパティでは使用されません。The Get statement is not used with auto-implemented properties.

  • statements

    任意。Optional. Get または Set プロシージャ内で実行するステートメントのブロック。Block of statements to run within the Get or Set procedure.

  • End Get

    Get プロパティプロシージャを終了します。Terminates the Get property procedure.

  • Set

    任意。Optional. プロパティが WriteOnlyとしてマークされている場合は必須。Required if the property is marked WriteOnly. プロパティの値を格納するために使用される Set プロパティプロシージャを開始します。Starts a Set property procedure that is used to store the value of the property. Set ステートメントは、自動実装プロパティでは使用されません。The Set statement is not used with auto-implemented properties.

  • End Set

    Set プロパティプロシージャを終了します。Terminates the Set property procedure.

  • End Property

    このプロパティの定義を終了します。Terminates the definition of this property.

コメントRemarks

Property ステートメントでは、プロパティの宣言が導入されています。The Property statement introduces the declaration of a property. プロパティは、Get プロシージャ (読み取り専用)、Set プロシージャ (書き込み専用)、またはその両方 (読み取り/書き込み) を持つことができます。A property can have a Get procedure (read only), a Set procedure (write only), or both (read-write). 自動実装プロパティを使用する場合は、GetSet の手順を省略できます。You can omit the Get and Set procedure when using an auto-implemented property. 詳細については、「自動実装プロパティ」を参照してください。For more information, see Auto-Implemented Properties.

Property はクラスレベルでのみ使用できます。You can use Property only at class level. つまり、プロパティの宣言コンテキストはクラス、構造体、モジュール、またはインターフェイスである必要があり、ソースファイル、名前空間、プロシージャ、またはブロックにすることはできません。This means the declaration context for a property must be a class, structure, module, or interface, and cannot be a source file, namespace, procedure, or block. 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。For more information, see Declaration Contexts and Default Access Levels.

既定では、プロパティはパブリックアクセスを使用します。By default, properties use public access. Property ステートメントでアクセス修飾子を使用してプロパティのアクセスレベルを調整できます。また、必要に応じて、プロパティプロシージャの1つをより制限の厳しいアクセスレベルに調整することもできます。You can adjust a property's access level with an access modifier on the Property statement, and you can optionally adjust one of its property procedures to a more restrictive access level.

Visual Basic は、プロパティの割り当て時に Set プロシージャにパラメーターを渡します。Visual Basic passes a parameter to the Set procedure during property assignments. Setのパラメーターを指定しない場合、統合開発環境 (IDE) は valueという名前の暗黙的なパラメーターを使用します。If you do not supply a parameter for Set, the integrated development environment (IDE) uses an implicit parameter named value. このパラメーターは、プロパティに割り当てられる値を保持します。This parameter holds the value to be assigned to the property. 通常、この値はプライベートローカル変数に格納し、Get プロシージャが呼び出されるたびに返されます。You typically store this value in a private local variable and return it whenever the Get procedure is called.

ルールRules

  • 混合アクセスレベル。Mixed Access Levels. 読み取り/書き込みプロパティを定義する場合は、必要に応じて、Get または Set のいずれかのプロシージャに対して異なるアクセスレベルを指定できますが、両方を指定することはできません。If you are defining a read-write property, you can optionally specify a different access level for either the Get or the Set procedure, but not both. この場合、プロシージャのアクセスレベルは、プロパティのアクセスレベルよりも制限されている必要があります。If you do this, the procedure access level must be more restrictive than the property's access level. たとえば、プロパティが Friendとして宣言されている場合は、Set プロシージャ Privateを宣言できますが、Publicは宣言できません。For example, if the property is declared Friend, you can declare the Set procedure Private, but not Public.

    ReadOnly または WriteOnly プロパティを定義する場合、1つのプロパティプロシージャ (それぞれGet または Set) が、すべてのプロパティを表します。If you are defining a ReadOnly or WriteOnly property, the single property procedure (Get or Set, respectively) represents all of the property. このようなプロシージャに対して異なるアクセスレベルを宣言することはできません。これは、プロパティに2つのアクセスレベルが設定されるためです。You cannot declare a different access level for such a procedure, because that would set two access levels for the property.

  • 戻り値の型。Return Type. Property ステートメントでは、返される値のデータ型を宣言できます。The Property statement can declare the data type of the value it returns. 任意のデータ型を指定することも、列挙型、構造体、クラス、またはインターフェイスの名前を指定することもできます。You can specify any data type or the name of an enumeration, structure, class, or interface.

    returntypeを指定しない場合、プロパティは Objectを返します。If you do not specify returntype, the property returns Object.

  • ション.Implementation. このプロパティで Implements キーワードが使用されている場合、その親クラスまたは構造体には、その Class または Structure ステートメントの直後にある Implements ステートメントが必要です。If this property uses the Implements keyword, the containing class or structure must have an Implements statement immediately following its Class or Structure statement. Implements ステートメントには、implementslistで指定された各インターフェイスを含める必要があります。The Implements statement must include each interface specified in implementslist. ただし、インターフェイスが Property を定義するときに使用する名前 (definedname) は、このプロパティの名前と同じである必要はありません (name)。However, the name by which an interface defines the Property (in definedname) does not have to be the same as the name of this property (in name).

動作Behavior

  • プロパティプロシージャからを返します。Returning from a Property Procedure. Get または Set プロシージャが呼び出し元のコードに戻ると、そのプロシージャを呼び出したステートメントの後のステートメントで実行が続行されます。When the Get or Set procedure returns to the calling code, execution continues with the statement following the statement that invoked it.

    Exit Property ステートメントおよび Return ステートメントでは、プロパティプロシージャがすぐに終了します。The Exit Property and Return statements cause an immediate exit from a property procedure. プロシージャ内の任意の場所で任意の数の Exit Property および Return ステートメントを使用できます。また、Exit PropertyReturn のステートメントを混在させることができます。Any number of Exit Property and Return statements can appear anywhere in the procedure, and you can mix Exit Property and Return statements.

  • 戻り値。Return Value. Get プロシージャから値を返すには、プロパティ名に値を割り当てるか、Return ステートメントに値を含めることができます。To return a value from a Get procedure, you can either assign the value to the property name or include it in a Return statement. 次の例では、プロパティ名 quoteForTheDay に戻り値を割り当て、Exit Property ステートメントを使用してを返します。The following example assigns the return value to the property name quoteForTheDay and then uses the Exit Property statement to return.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    nameに値を割り当てずに Exit Property を使用する場合、Get プロシージャはプロパティのデータ型の既定値を返します。If you use Exit Property without assigning a value to name, the Get procedure returns the default value for the property's data type.

    同時に Return ステートメントによって、Get プロシージャの戻り値が割り当てられ、プロシージャが終了します。The Return statement at the same time assigns the Get procedure return value and exits the procedure. この例を次に示します。The following example shows this.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Example

次の例では、クラスのプロパティを宣言しています。The following example declares a property in a class.

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property Prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value 
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

関連項目See also