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


Параметр типа <имяПараметраТипа1> должен иметь либо ограничение New или Structure, чтобы удовлетворять ограничению New параметра типа <имяПараметраТипа2>

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

Type parameter '<typeparametername1>' must have either a 'New' constraint or a 'Structure' constraint to satisfy the 'New' constraint for type parameter '<typeparametername2>'

Оператор создает универсальный тип передачи параметра типа, который не ограничен для удовлетворения ограничения New.

Ограничение New означает, что аргумент типа, предоставленный для данного параметра типа должен предоставлять коду доступ к конструктору без параметров, который создает объекты из него. Беспараметрические конструкторы имеются для всех типов значений, но не для всех ссылочных типов. Поэтому ограничение Structure удовлетворяет ограничению New, а ограничение Class или имя класса или интерфейса — нет.

Эта ошибка может быть вызвана следующими операторами.

Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
    Public testObject As New c1(Of u)
End Class

Когда класс c2 создает объект из c1, параметр типа u не удовлетворяет ограничениям New для параметра типа t.

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

Чтобы исправить данную ошибку

  • Если передаваемый параметр типа может удовлетворять ограничению Structure или New, следует добавить к его определению соответствующее ограничение.

    Public Class c2(Of u As Structure)
    
  • Если параметр типа не удовлетворяет ограничению Structure или New, не следует передавать его в универсальный тип. Следует передать в качестве аргумента типа что–нибудь другое.

См. также

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

Универсальные типы в Visual Basic

Типы значений и ссылочные типы

Ссылки

New (Visual Basic)

Структура (Visual Basic)

Class (Visual Basic)