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

値をプロパティに割り当てるのに使用する Set プロパティ プロシージャを宣言します。Declares a Set property procedure used to assign a value to a property.

構文Syntax

[ <attributelist> ] [ accessmodifier ] Set (ByVal value [ As datatype ])  
    [ statements ]  
End Set  

指定項目Parts

attributelist
任意。Optional. 属性リスト」を参照してください。See Attribute List.

accessmodifier
このプロパティの Get および Set ステートメントのいずれかで、省略可能です。Optional on at most one of the Get and Set statements in this property. 次のいずれかの値を指定します。Can be one of the following:

Access levels in Visual Basic」を参照してください。See Access levels in Visual Basic.

value
必須です。Required. プロパティの新しい値を含むパラメーターです。Parameter containing the new value for the property.

datatype
Option StrictOn の場合は必ず指定します。Required if Option Strict is On. value パラメーターのデータ型。Data type of the value parameter. 指定するデータ型は、この Set ステートメントが宣言されているプロパティのデータ型と同じである必要があります。The data type specified must be the same as the data type of the property where this Set statement is declared.

statements
任意。Optional. Set プロパティ プロシージャが呼び出されたときに実行される 1 つ以上のステートメント。One or more statements that run when the Set property procedure is called.

End Set
必須です。Required. Set プロパティ プロシージャの定義を終了します。Terminates the definition of the Set property procedure.

RemarksRemarks

プロパティが ReadOnly とマークされている場合を除き、すべてのプロパティには Set プロパティ プロシージャが必要です。Every property must have a Set property procedure unless the property is marked ReadOnly. Set プロシージャは、プロパティの値を設定するために使用します。The Set procedure is used to set the value of the property.

Visual Basic は、プロパティに格納される値が代入ステートメントによって提供されるときに、プロパティの Set プロシージャを自動的に呼び出します。Visual Basic automatically calls a property's Set procedure when an assignment statement provides a value to be stored in the property.

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. このパラメーターは、プロパティに割り当てられる値を保持します。The 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.

プロパティ宣言の本体には、Property ステートメントEnd Property ステートメントの間に、プロパティの GetSet のプロシージャのみを含めることができます。The body of the property declaration can contain only the property's Get and Set procedures between the Property Statement and the End Property statement. これらのプロシージャ以外のものを格納することはできません。It cannot store anything other than those procedures. 特に、プロパティの現在の値を格納することはできません。In particular, it cannot store the property's current value. この値は、プロパティの外部に格納する必要があります。それをいずれかのプロパティ プロシージャの内部に格納した場合、他のプロパティ プロシージャからアクセスできなくなるためです。You must store this value outside the property, because if you store it inside either of the property procedures, the other property procedure cannot access it. 通常の方法は、プロパティと同じレベルで宣言された Private 変数に値を格納することです。The usual approach is to store the value in a Private variable declared at the same level as the property. Set プロシージャは、適用先のプロパティの内部で定義する必要があります。You must define a Set procedure inside the property to which it applies.

Set ステートメントで accessmodifier を使用しない限り、Set プロシージャは既定で、それを含んでいるプロパティのアクセス レベルに設定されます。The Set procedure defaults to the access level of its containing property unless you use accessmodifier in the Set statement.

ルール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 プロシージャを、Public ではなく Private として宣言できます。For example, if the property is declared Friend, you can declare the Set procedure Private, but not Public.

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

動作Behavior

  • プロパティ プロシージャからの復帰。Returning from a Property Procedure. Set プロシージャから呼び出し元のコードに返されると、実行は、格納される値を指定したステートメントの後のステートメントから続行されます。When the Set procedure returns to the calling code, execution continues following the statement that provided the value to be stored.

    Set プロパティ プロシージャは、Return ステートメントまたは Exit ステートメントのいずれかを使用して返すことができます。Set property procedures can return using either the Return Statement or the Exit Statement.

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

Example

次の例では、Set ステートメントを使用してプロパティの値を設定します。The following example uses the Set statement to set the value of a property.

Class propClass
    Private propVal As Integer
    Property Prop1() As Integer
        Get
            Return propVal
        End Get
        Set(ByVal value As Integer)
            propVal = value
        End Set
    End Property
End Class

関連項目See also