Sono nuovo nella programmazione in C #, stavo sperimentando il concetto degli iteratori in C #. Qui, sto cercando di visualizzare tutti i termini in una lista, per questo sto provando diversi modi per ottenere i risultati. Nel codice seguente, sto usando due classi ListIterator e ImplementList.
In ListIterator class
: ho definito un HashSet
e utilizza IEnumerator
per memorizzare i valori. Qui il metodo GetEnumerator()
restituisce i valori nell'elenco. GetEnumerator è implementato in ImplementList class
(altra classe). Infine, l'elenco viene visualizzato nella console.
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();
}
}
Nella classe ImplementList: GetEnumerator()
è definito e restituisce l'elenco utilizzando 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;
}
}
Ora, voglio riscrivere GetEnumerator()
senza usare yield return
. E dovrebbe restituire tutti i valori in una lista. Ho provato a utilizzare per il ciclo come for(int x=0; x<Mylist.Count; x++)
, ma non restituisce tutti i valori nell'elenco.
È possibile ottenere tutti i valori nell'elenco senza utilizzare yield return
in IEnumerator