实现 IEnumerable 的自定义集合
我知道从技术上讲,接口用于读取而不是写入或编辑,但是,我想向以下类添加 add 和 addrange 函数,这是我目前拥有的功能,但不起作用,
public class HrefCollection : IEnumerable<Href>
{
private IEnumerable<Href> hrefs;
public IEnumerable<Href> Add( Href href )
{
yield return href;
}
public IEnumerable<Href> AddRange( List<Href> hrefs )
{
foreach( Href href in hrefs )
{
yield return href;
}
}
public IEnumerator<Href> GetEnumerator()
{
return hrefs.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return hrefs.GetEnumerator();
}
}
我不太确定如何将收益回报与私有列表关联起来。
感谢您的帮助!
I know that technically, an Interface is used for reading and not writting or editing however, I want to add an add and addrange function to the following class, here is what I currently have which is not working
public class HrefCollection : IEnumerable<Href>
{
private IEnumerable<Href> hrefs;
public IEnumerable<Href> Add( Href href )
{
yield return href;
}
public IEnumerable<Href> AddRange( List<Href> hrefs )
{
foreach( Href href in hrefs )
{
yield return href;
}
}
public IEnumerator<Href> GetEnumerator()
{
return hrefs.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return hrefs.GetEnumerator();
}
}
I'm not quite sure how to associate the yield return with the private list.
Thanks for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
IEnumerable
和IEnumerable
接口用于生成只读序列或提供集合中项目的只读视图。如果您希望能够向集合添加项目,那么在内部,您需要使用允许添加项目的数据结构 - 例如
List
。您根本无法使用IEnumerable
或IEnumerable
接口添加项目。The
IEnumerable<T>
andIEnumerable
interfaces are used to generate a read-only sequence or provide a read-only view of the items in a collection.If you want to be able to add items to your collection then, internally, you'll need to use a data structure that allows items to be added -- for example
List<T>
. You simply can't add items using theIEnumerable<T>
orIEnumerable
interfaces.应该是
should be