9

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

我想我可以使用泛型来做到这一点,使用以下语法:

    Public Class FooCollection(Of type As Foo)
        Inherits CollectionBase

        ...

    End Class

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

谢谢你的帮助!

编辑:感谢您的回答。可以,但是我想以某种方式命名类类型,实际上我使用以下代码完全实现了我正在寻找的内容:

Public Class FooCollection
    Inherits List(Of Foo)

End Class
4

2 回答 2

10

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

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)更多信息,请参阅。

于 2008-10-10T04:45:21.040 回答
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

结束属性

于 2010-02-16T00:00:11.220 回答