0

我有一些基于IEnumerable<T>. 现在我想重载构造函数并用我得到的初始列表做一些自定义的东西。

//Constructor
public CustomList(IEnumerable<T> collection) : base(collection)
{
    //do some stuff with the collection e.g. iterate
    foreach(T obj in collection)
    {
        //do some stuff with obj
    }
}

甚至有可能这样做吗?因为 IEnumerable 只能在 枚举一次base(collection),但我猜循环会失败。

编辑: 因为不是每个人都完全清楚:我的基类是IEnumerable<T>并且IEnumerable只能在我的情况下枚举一次。

4

1 回答 1

1

假设您的基类是List<T>,则基构造函数将所有项目添加到当前对象。因此,您可以根据需要经常执行以下操作:

foreach (T obj in this) { }

但我听说继承自 是一个坏主意List<T>,你应该实现IList<T>它,即使它只是List<T>. 我只是不记得为什么会这样。

于 2013-03-22T19:47:25.153 回答