Nie można zainicjować właściwości "<propertyname>" w wyrażeniu inicjatora obiektu, ponieważ wszystkie dostępne przeciążenia wymagają argumentów

Składowe zainicjowane na liście inicjatora obiektów muszą być polami lub właściwościami. Ponadto właściwości na liście inicjatorów nie mogą mieć parametrów. Właściwość powodująca ten błąd jest przeciążona, a każda z jego wersji wymaga argumentów. W związku z tym nie można zainicjować właściwości na liście inicjatora obiektów.

Identyfikator błędu: BC30993

Aby poprawić ten błąd

  • Usuń właściwość, która wymaga argumentów z listy inicjatorów.

Przykład

Następująca klasa zawiera trzy definicje właściwości: jedną dla TotalItems i dwie dla Itemklasy , która jest przeciążona.

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  

Właściwość TotalItems nie wymaga żadnych argumentów i może zostać zainicjowana na liście inicjowania obiektów, jak pokazano w poniższej deklaracji.

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

Właściwość Item jest przeciążona, a każde przeciążenie wymaga argumentu. Item W związku z tym nie można wyświetlić się na liście inicjatora obiektów.

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

Aby uniknąć tego błędu, zainicjuj Item właściwość poza inicjatorem obiektu.

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

Zobacz też