IEnumerable构造函数重载

时间:2013-03-22 19:40:06

标签: c# ienumerable enumeration

我有一些基于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只能在我的情况下枚举一次。

1 个答案:

答案 0 :(得分:1)

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

foreach (T obj in this) { }

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