Я изучаю концепции итераторов на C # и экспериментирую с кодами, решая простые задачи и пытаясь реализовать по-разному. Я пытаюсь отобразить все термины в списке, для этого пытаюсь разными способами получить результаты. В приведенном ниже коде я использую два класса ListIterator и ImplementList.
В классе ListIterator: я определил HashSet, и он использует IEnumerator для хранения значений. Здесь метод GetEnumerator () возвращает значения в списке. GetEnumerator реализован в классе ImplementList (другой класс). Наконец, список отображается в консоли.
public class ListIterator
{
public void DisplayList()
{
HashSet<int> myhashSet = new HashSet<int> { 30, 4, 27, 35, 96, 34};
IEnumerator<int> IE = myhashSet.GetEnumerator();
while (IE.MoveNext())
{
int x = IE.Current;
Console.Write("{0} ", x);
}
Console.WriteLine();
Console.ReadKey();
}
}
В классе ImplementList определена функция GetEnumerator (), которая возвращает список с помощью yield return x.
public class ImplementList : IList<int>
{
private List<int> Mylist = new List<int>();
public ImplementList() { }
public void Add(int item)
{
Mylist.Add(item);
}
public IEnumerator<int> GetEnumerator()
{
foreach (int x in Mylist)
yield return x;
}
}
Теперь я хочу переписать GetEnumerator () без использования yield return. И он должен вернуть все значения в списке. Можно ли получить все значения в списке без использования yield return в IEnumerator