VB.NET强类型集合
我想在VB.NET中创建一个集合,但我只希望它接受某种类型的对象。例如,我想创建一个名为“FooCollection”的类,它在各个方面都像一个集合,但只接受类型为“Foo”的对象 我想我可以使用泛型,使用以下语法:VB.NET强类型集合,vb.net,generics,class,collections,Vb.net,Generics,Class,Collections,我想在VB.NET中创建一个集合,但我只希望它接受某种类型的对象。例如,我想创建一个名为“FooCollection”的类,它在各个方面都像一个集合,但只接受类型为“Foo”的对象 我想我可以使用泛型,使用以下语法: Public Class FooCollection(Of type As Foo) Inherits CollectionBase ... End Class 但当我编译它的时候,我得到了一个错误,我“必须实现一个默认的访问器
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
你为什么不使用一个(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'
有关详细信息,请参见
。您需要为集合实现如下默认属性:
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
结束属性取决于他在做什么。该列表仅供应用程序代码内部使用。您应该避免编写接受或返回列表的公共API——考虑改用超类或集合接口。