Поделиться через


Свойство <имяСвойства> невозможно инициализировать в выражении инициализатора объектов, так как все доступные перегруженные версии требуют аргументов

Обновлен: Ноябрь 2007

Property '<propertyname>' cannot be initialized in an object initializer expression because all accessible overloads require arguments

Члены, инициализируемые в списке инициализатора объектов, должны быть либо полями или свойствами. Кроме того, свойства в списке инициализатора не могут иметь параметров. Вызвавшее эту ошибку свойство перегружено, и все его версии требуют аргументов. Таким образом, свойство не может быть инициализировано в списке инициализатора объектов.

Идентификатор ошибки: BC30993

Исправление этой ошибки

  • Удалите свойство, для которого требуется аргумент, из списка инициализатора.

Пример

Следующий класс содержит три определения свойств: одно для TotalItems и два для Item, которые перегружаются.

    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

См. также

Задачи

Практическое руководство. Вызов процедуры Get свойства

Основные понятия

Свойства и процедуры свойств

Инициализаторы объектов: именованные и анонимные типы

Свойства, используемые по умолчанию

Перегрузка процедур

Ссылки

Overloads