鉴于以下内容:
Public MustInherit Class A(Of X As A(Of X, Y), Y As B(Of X, Y))
End Class
Public MustInherit Class B(Of X As A(Of X, Y), Y As B(Of X, Y))
End Class
Public Class D
Private _v As A(Of X As A(Of X, Y), Y AS B(Of X, Y))
Public Sub Initialize(Of X As A(Of X, Y), Y As B(Of X, Y))(ByVal v As A(Of X, Y))
_v = v
End Sub
End Class
是否可以定义成员变量_v?定义成员变量时,“As”关键字似乎不可用,因此上面的代码不会编译,编译器会抱怨类型参数太少。
答案 0 :(得分:3)
在泛型类型参数中使用As
正在建立约束。这只能在定义类型参数的位置完成。在_v
的情况下,您声明了特定类型的实例,可能使用现有的类型参数。此时As
不合法,因为您没有定义新的类型参数。
您可以在D
上定义参数,并在_v