既定のプロパティ

更新 : 2007 年 11 月

引数を受け取るプロパティは、クラスの既定のプロパティとして宣言できます。既定のプロパティとは、オブジェクトに対して特定のプロパティが指定されていない場合に Visual Basic が使用するプロパティです。既定のプロパティを使うと、頻繁に使用するプロパティ名を省略してソース コードをコンパクトにできます。

既定のプロパティにするのに最も適しているのは、パラメータを受け取るプロパティのうちで最もよく使用するプロパティです。たとえば、コレクション クラスの Item プロパティは頻繁に使用されるので、既定のプロパティにするのに適しています。

既定のプロパティには、次のような規則があります。

  • 1 つの型に指定できる既定のプロパティは、基本クラスから継承するプロパティも含めて 1 つだけです。この規則には例外が 1 つあります。基本クラスで定義された既定のプロパティを、派生クラスで定義された別の既定のプロパティでシャドウできます。

  • 基本クラスの既定のプロパティが、派生クラスの既定以外のプロパティでシャドウされる場合でも、既定のプロパティの構文を使用することによって既定のプロパティにアクセスできます。

  • 既定のプロパティを Shared や Private にすることはできません。

  • オーバーロードされたプロパティを既定のプロパティにする場合は、オーバーロードされた同じ名前のプロパティをすべて Default に指定する必要があります。

  • 既定のプロパティは、少なくとも 1 つの引数を受け取る必要があります。

次の例では、文字列配列を含むプロパティをクラスの既定のプロパティとして宣言しています。

Class Class2
    ' Define a local variable to store the property value.
    Private PropertyValues As String()
    ' Define the default property.
    Default Public Property Prop1(ByVal Index As Integer) As String
        Get
            Return PropertyValues(Index)
        End Get
        Set(ByVal Value As String)
            If PropertyValues Is Nothing Then
                ' The array contains Nothing when first accessed.
                ReDim PropertyValues(0)
            Else
                ' Re-dimension the array to hold the new element.
                ReDim Preserve PropertyValues(UBound(PropertyValues) + 1)
            End If
            PropertyValues(Index) = Value
        End Set
    End Property
End Class

既定のプロパティへのアクセス

既定のプロパティにアクセスするときは、省略した構文を使用できます。次のコードでは、標準のプロパティの構文と既定のプロパティの構文の両方が使われています。

Dim C As New Class2
' The first two lines of code access a property the standard way.

' Property assignment.
C.Prop1(0) = "Value One"
' Property retrieval.
MsgBox(C.Prop1(0))

' The following two lines of code use default property syntax.

' Property assignment.
C(1) = "Value Two"
' Property retrieval.
MsgBox(C(1))

参照

概念

アップグレードに関する推奨事項 : パラメータのない既定プロパティの解決

既定のプロパティの変更点 (Visual Basic 6.0 ユーザー向け)

参照

Default (Visual Basic)