Я знаю, что технически, Интерфейс используется для чтения и не записи или редактирования однако, я хочу добавить добавление и функцию 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();
}
}
Я не совсем уверен, как связать возврат урожая с частным списком.
Спасибо за помощь!
Интерфейсы IEnumerable
и IEnumerable
используются для создания последовательности, доступной только для чтения, или для обеспечения просмотра элементов в коллекции только для чтения.
Если вы хотите иметь возможность добавлять элементы в свою коллекцию, то для внутреннего использования вам необходимо использовать структуру данных, которая позволяет добавлять элементы, например List
. Вы просто не можете добавлять элементы с помощью интерфейсов IEnumerable
или IEnumerable
.
public class HrefCollection : IEnumerable<Href>
{
private readonly List<Href> _hrefs = new List<Href>();
public void Add(Href href)
{
_hrefs.Add(href);
}
public void AddRange(IEnumerable<Href> hrefs)
{
_hrefs.AddRange(hrefs);
}
public IEnumerator<Href> GetEnumerator()
{
return _hrefs.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)_hrefs).GetEnumerator();
}
}
foreach( Href href in hrefs )
{
yield return href;
}
должно быть
foreach( Href href in this.hrefs )
{
yield return href;
}
foreach( Href href in hrefs )
{
yield return href;
}