在.NET(vb或C#)中继承List <T>
我已经在C ++世界中进行了一段时间的研究,但现在我再次进入.NET世界,VB和C#,我想知道你是否有一个代表某个东西集合的类,并且你希望能够在foreach循环等...是自己实现IEnumerable
和IEnumerator
更好还是应该从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>
,取决于您的特定需求。