Set ステートメント (Visual Basic)
更新 : 2007 年 11 月
値をプロパティに代入するための Set プロパティ プロシージャを宣言します。
[ <attributelist> ] [ accessmodifier ] Set (ByVal value [ As datatype ])
[ statements ]
End Set
指定項目
attributelist
省略可能です。「属性リスト」を参照してください。accessmodifier
このプロパティでは、Get ステートメントと Set ステートメントのうちの 1 つについては、指定を省略できます。次のいずれかを指定できます。Visual Basic でのアクセス レベル を参照してください。
value
必ず指定します。このパラメータには、プロパティの新しい値が格納されます。datatype
Option Strict が On の場合は、必ず指定します。value パラメータのデータ型を指定します。指定するデータ型は、この Set ステートメントを宣言するプロパティのデータ型と同じにする必要があります。statements
省略可能です。Set プロパティ プロシージャの呼び出し時に実行される 1 つ以上のステートメントを指定します。End Set
必ず指定します。Set プロパティ プロシージャの定義を終了します。
解説
ReadOnly のマークが付けられたプロパティを除き、すべてのプロパティは Set プロパティ プロシージャを持つ必要があります。Set プロシージャは、プロパティの値を設定するために使用されます。
プロパティに保存する値が代入ステートメントで指定された場合、Visual Basic は自動的にプロパティの Set プロシージャを呼び出します。
Visual Basic は、プロパティに値を代入するときにパラメータを Set プロシージャに渡します。Set のパラメータを指定しないと、統合開発環境 (IDE: Integrated Development Environment) では value というパラメータが暗黙的に使用されます。このパラメータには、プロパティに代入する値が含まれています。通常、この値はプライベートなローカル変数に格納しますが、Get プロシージャを呼び出せばいつでも値を取得できます。
プロパティ宣言の本体には、プロパティの Get プロシージャと Set プロシージャのみを Property ステートメント ステートメントと End Property ステートメントの間に記述できます。それ以外のプロシージャを含めることはできません。特に、プロパティの現在の値を含めることはできません。現在の値をどちらかのプロパティ プロシージャの内部に含めると他のプロパティ プロシージャから値にアクセスできなくなるため、この値はプロパティの外部に格納する必要があります。通常は、プロパティと同じレベルで Private (Visual Basic) 変数を宣言し、この中に現在の値を格納します。Set プロシージャが適用されるプロパティには、このプロシージャを内部に定義する必要があります。
Set ステートメント内で accessmodifier を使ってアクセス レベルを設定しない限り、既定で Set プロシージャのアクセス レベルは、それが含まれるプロパティと同じになります。
規則
アクセス レベルの混在。 読み書き可能なプロパティを定義する場合、必要であれば Get プロシージャと Set プロシージャのどちらかに限り、プロパティとは異なるアクセス レベルを指定できます。これを指定する場合は、プロシージャにプロパティよりも制限の高いアクセス レベルを指定する必要があります。たとえば、プロパティを Friend で宣言した場合、Set プロシージャは Private で宣言できますが、 Public では宣言できません。
WriteOnly プロパティを宣言している場合は、Set プロシージャはプロパティ全体を表します。別のアクセス レベルを Set に宣言するとプロパティに 2 つのアクセス レベルを設定することになるので、このような宣言はできません。
動作
**プロパティ プロシージャからの制御の戻り。**Set プロシージャから呼び出し元のコードに戻ると、プロパティに格納する値を渡したステートメントの直後から実行が続行されます。
Set プロパティ プロシージャは、Return ステートメント (Visual Basic) または Exit ステートメント (Visual Basic) を使って呼び出し元に戻ることができます。
Exit Property ステートメントおよび Return ステートメントは、プロパティ プロシージャを直ちに終了します。Exit Property ステートメントと Return ステートメントは、プロシージャ内の任意の位置で何回でも指定でき、Exit Property ステートメントと Return ステートメントを同じプロパティ内で混在して使用できます。
使用例
Set ステートメントを使って、プロパティの値を設定するコード例を次に示します。
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