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
在我的情况下只能枚举一次。
假设您的基类是List<T>
,那么基构造函数将所有项添加到当前对象中。因此,您可以随时执行以下操作:
foreach (T obj in this) { }
但是我听说从List<T>
继承是一个坏主意,你应该实现IList<T>
而不是,即使它只是一个围绕List<T>
的包装。我只是想不起来为什么了