プロパティ プロシージャの変更点 (Visual Basic 6.0 ユーザー向け)
更新 : 2007 年 11 月
Visual Basic 2008 では、簡略化するため、および他のプログラミング言語との相互運用性を確保するため、プロパティのプロシージャとパラメータの宣言が更新されています。
Visual Basic 6.0
Visual Basic 6.0 では、Property Get、Property Let、および Property Set の各ステートメントを使ってプロパティ値の取得と設定を行います。
プロパティ パラメータを ByRef で宣言できます。このように変数をパラメータに渡すことにより、プロシージャは呼び出し元のコードにある変数を変更できます。
Visual Basic 2008
Visual Basic 2008 では、プロパティの値を取得および設定するプロシージャを含む、統一されたプロパティ宣言の構文が導入されています。これにより、アクセス レベルやオーバーロードなどのプロパティ属性の一貫性が保証されます。次の例は、パラメータを受け取らないプロパティの宣言を示しています。
Private monthNum As Integer = 1
Property month() As Integer
Get
Return monthNum
End Get
Set(ByVal Value As Integer)
If Value < 1 Or Value > 12 Then
' Error processing for invalid value.
Else
monthNum = Value
End If
End Set
End Property
Set 用のパラメータには希望の名前を付けることができます。引数を指定しない場合は、Value が自動的に生成されます。
このように構文が変更されたことにより、Property Get ステートメントと Property Set ステートメントは不要になり、サポートされなくなりました。Visual Basic 2008 では、パラメータのない既定のプロパティは認められないので、オブジェクト参照の割り当てか既定のプロパティの割り当てかを区別するための Property Let および Property Set は不要になりました。したがって、Property Let ステートメントもサポートされません。
Visual Basic 2008 では、ByRef プロパティ パラメータはサポートされません。プロパティ プロシージャに ByRef パラメータがあった場合、引数の基になる変数が変更されると、プロパティが予測不可能な動作をすることがあります。したがって、パラメータ化したプロパティの宣言では、パラメータに必ず ByVal を指定する必要があります。
参照
概念
既定のプロパティの変更点 (Visual Basic 6.0 ユーザー向け)