我有一些基于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
只能在我的情况下枚举一次。
答案 0 :(得分:1)
假设您的基类是List<T>
,那么基础构造函数会将所有项添加到当前对象。因此,您可以根据需要随时执行以下操作:
foreach (T obj in this) { }
但是我听说继承List<T>
是个坏主意,你应该实现IList<T>
,即使它只是List<T>
的包装。我不记得为什么会这样。