在.NET(vb或C#)中继承List <T>

我已经在C ++世界中进行了一段时间的研究,但现在我再次进入.NET世界,VB和C#,我想知道你是否有一个代表某个东西集合的类,并且你希望能够在foreach循环等...是自己实现IEnumerableIEnumerator更好还是应该从List<T>继承,其中T是单数形式的对象类型?

我知道在C ++中,从容器继承是一个坏主意。

但是.NET呢。

编辑:

看来我的问题有些误解。 我对.NET中现有的集合并不感到不满。 这是我的问题,我有一个名为'Person'的类,我需要一个名为'Scouts'的集合,我想在一个名为'Scouts'的类中使用,此时我希望能够写出

foreach Person in Scouts ...

将Scout作为人员集合并将其用于foreach循环中的最佳方式是什么?


你说:

我有一个名为'Person'的类,我需要一个名为'Scouts'的集合,我希望在一个名为'Scouts'的类中使用,此时我希望能够编写

foreach Person in Scouts ...

如果我理解正确,你想要:

class Scouts : IEnumerable<Person>
{
    private List<Person> scouts;

    public IEnumerator<Person> GetEnumerator()
    {
        return scouts.GetEnumerator();
    }
}

在.NET中,很少实现IEnumerable<T>或从List<T>派生。 如果你需要一个带索引器的动态长度集合,你可以直接使用List<T> ,如果你需要一个固定长度的集合,你可以使用一个数组T[]System.Collections.Generic命名空间包含大部分通用集合类。


真正的问题是,你为什么要实现自己的“收集东西”? 那就是,为什么你对现有的藏品感到不满?

一旦你回答了这个问题(并且仍然确定你想这样做),你最好从System.Collections.ObjectModel命名空间中的一个集合继承 - 即Collection<T>KeyedCollection<T> ,或者ReadOnlyCollection<T> ,取决于您的特定需求。

链接地址: http://www.djcxy.com/p/53871.html

上一篇: Inheriting from List<T> in .NET (vb or C#)

下一篇: Question inheriting from List(of T) class