VB.NET中的自引用泛型成员变量

时间:2013-03-18 16:26:46

标签: vb.net generics

鉴于以下内容:

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”关键字似乎不可用,因此上面的代码不会编译,编译器会抱怨类型参数太少。

1 个答案:

答案 0 :(得分:3)

在泛型类型参数中使用As正在建立约束。这只能在定义类型参数的位置完成。在_v的情况下,您声明了特定类型的实例,可能使用现有的类型参数。此时As不合法,因为您没有定义新的类型参数。

您可以在D上定义参数,并在_v

的声明中使用它们