Új hozzászólás Aktív témák

  • C^^

    őstag

    Sziasztok,

    Egy kis segítséget szeretnék kérni.
    Adott egy generikus, egyirányú láncolt lista, amit be kéne járni foreach ciklussal.
    Ehhez ugyebár a listának implementálnia kell az IEnumerable interfészt, amihez kell egy "felsoroló" generikus osztály, ami implementálja az IEnumerator-t (generikus formában).

    Ez idáig rendben is van, meg is írtam a "felsoroló" osztályt, illetve a listában implementálva van az IEnumerable interfész, hibát sem dob a fordító, viszont futásnál a foreach-t mintha egyszerűen átugraná a program.

    Így néz ki a "bejáróm":
    class ListaBejáró<T>:IEnumerator<T>
    {
    ListaElem<T> elso, akt;

    public ListaBejáró(ListaElem<T> elso)
    {
    this.elso = elso;
    akt = null;
    }

    public T Current
    {
    get { return akt.Adat; }
    }

    public void Dispose()
    {
    elso = null;
    akt = null;
    }

    object System.Collections.IEnumerator.Current
    {
    get { return this.Current; }
    }

    public bool MoveNext()
    {
    if (akt==null)
    {
    akt = elso;
    return false;
    }
    else
    {
    akt = akt.KovetkezoElem;
    return true;
    }
    }

    public void Reset()
    {
    akt = null;
    }
    }

    Így pedig az IEnumerable implementáció:
    public IEnumerator<T> GetEnumerator()
    {
    ListaBejáró<T> bejaro = new ListaBejáró<T>(ElsoElem);
    return bejaro;
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
    return this.GetEnumerator();
    }

    ListaElem<T> objektumokból áll maga a láncoltlista. Az objektumnak van "Adat" mezője, és egy referenciája a következő elemre "KovetkezoElem" néven.

    Magának a listának van egy "ElsoElem" mezője, ami értelemszerűen a lista első elemét jelöli.

    Mi lehet a hiba?
    Előre is köszönöm.

Új hozzászólás Aktív témák