IEnumerable构造函数重载

本文关键字:重载 构造函数 IEnumerable | 更新日期: 2023-09-27 18:05:27

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

IEnumerable构造函数重载

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

foreach (T obj in this) { }

但是我听说从List<T>继承是一个坏主意,你应该实现IList<T>而不是,即使它只是一个围绕List<T>的包装。我只是想不起来为什么了