类型参数“<typeparametername1>”必须具有“New”约束或“Structure”约束,才能满足类型参数“<typeparametername2>”的“New”约束

更新:2007 年 11 月

语句构造了一个传递类型参数的泛型类型,该类型参数未被约束为可满足 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 不满足类型参数 t 上的 New 约束。

**错误 ID:**BC32084

更正此错误

  • 如果要传递到泛型类型的类型参数可满足 Structure 或 New 约束,则将相应的约束添加到其定义。

    Public Class c2(Of u As Structure)
    
  • 如果类型参数无法满足 Structure 或 New 约束,请不要将它传递到泛型类型。必须传递其他内容作为类型变量。

请参见

概念

Visual Basic 中的泛型类型

值类型和引用类型

参考

New (Visual Basic)

Structure (Visual Basic)

Class (Visual Basic)