アクセス可能なすべてのオーバーロードには引数が必要なため、プロパティ '<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