Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET强类型集合_Vb.net_Generics_Class_Collections - Fatal编程技术网

VB.NET强类型集合

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 但当我编译它的时候,我得到了一个错误,我“必须实现一个默认的访问器

我想在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

你为什么不使用一个(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——考虑改用超类或集合接口。