アクセス可能なすべてのオーバーロードには引数が必要なため、プロパティ '<propertyname>' はオブジェクト初期化子式で初期化できません

更新 : 2007 年 11 月

オブジェクト初期化子リストで初期化されるメンバは、フィールドまたはプロパティである必要があります。また、初期化子リストに含まれるプロパティは、パラメータを持つことはできません。このエラーの原因であるプロパティはオーバーロードされ、その各バージョンには引数が必要です。したがって、このプロパティはオブジェクト初期化子リストでは初期化できません。

エラー ID: BC30993

このエラーを解決するには

  • 初期化子リストから、引数を必要としているプロパティを削除します。

使用例

次のクラスには、TotalItems について 1 つ、Item について 2 つ、全部で 3 つのプロパティ定義が含まれ、このクラスはオーバーロードされます。

    Class CollectionOfItems
        Property TotalItems() As Integer
            Get
            End Get
            Set(ByVal value As Integer)
            End Set
        End Property
        Property Item(ByVal Key As String) As Object
            Get
            End Get
            Set(ByVal value As Object)
            End Set
        End Property
        Property Item(ByVal Index As Integer) As Object
            Get
            End Get
            Set(ByVal value As Object)
            End Set
        End Property
    End Class

TotalItems プロパティには引数がないので、次の宣言で示すように、オブジェクト初期化リストで初期化できます。

Dim coinCollection As New CollectionOfItems With { .TotalItems = 0 }

Item プロパティはオーバーロードされ、各オーバーロードには引数が必要です。したがって、Item はオブジェクト初期化子リストに含めることはできません。

' The following declaration is not valid.
' Dim coinCollection As New CollectionOfItems With { .TotalItems = 0, _
'    .Item = aCoinObject }

このエラーを回避するには、オブジェクト初期化子の外部で Item プロパティを初期化します。

Dim coinCollection As New CollectionOfItems With { .TotalItems = 0 }
coinCollection.Item(1) = aCoinObject

参照

処理手順

方法 : プロパティ プロシージャを呼び出す

概念

プロパティとプロパティ プロシージャ

オブジェクト初期化子 : 名前付きの型と匿名型

既定のプロパティ

プロシージャのオーバーロード

参照

Overloads