VB.NET强类型集合

时间:2008-10-10 04:39:26

标签: vb.net generics class collections

我想在VB.NET中创建一个集合,但我只希望它接受某种类型的对象。例如,我想创建一个名为“FooCollection”的类,它在各方面都像一个集合,但只接受“Foo”类型的对象。

我认为我可以使用泛型来执行此操作,使用以下语法:

    Public Class FooCollection(Of type As Foo)
        Inherits CollectionBase

        ...

    End Class

但是当我编译它时我得到一个错误,我“必须实现一个默认的访问器”,所以显然缺少了一些东西。我不想在实例化时指定它接受的类型 - 我希望FooCollection本身特定于它只接受Foo对象。我已经看到它在C#中使用强类型列表完成,所以我可能正在寻找的是VB.NET语法。

感谢您的帮助!

编辑:谢谢你的回答。这样做会,但我想让classtype以某种方式命名,我实际上完成了我正在寻找的以下代码:

Public Class FooCollection
    Inherits List(Of Foo)

End Class

2 个答案:

答案 0 :(得分:10)

为什么不使用List(Of Foo) ...它已经在System.Collections.Generic下的VB.NET中。要使用,只需声明:

Private myList As New List(Of Foo) 'Creates a Foo List'
Private myIntList As New List(Of Integer) 'Creates an Integer List'

有关详细信息,请参阅MSDN > List(T) Class (System.Collections.Generic)

答案 1 :(得分:1)

您需要为此集合实现默认属性,如下所示:

Default Public Property Item(ByVal Index As Integer) As Foo
Get
  Return CType(List.Item(Index), Foo)
End Get
Set(ByVal Value As Foo)
  List.Item(Index) = Value
End Set

结束财产