0

私の問題は基本的に、呼び出された関数/プロパティの順序です。カスタム リンク リスト、循環リストがあります。そこで、カスタム列挙子とすべてを作成しました。問題は、foreach サイクルが実際MoveNext()に enumerator のメソッドを最初に呼び出すため、サイクルの実際の最初のノードから 2 番目のノードに移動することです。これは、項目を実際の順序で並べたい場合に悪いことです。

質問は、私が何か間違ったことをしているのですか?そうでない場合、これをどのように補償するのですか?

のコードはEnumerator可能な限り単純です。これは、基本的に:

class EnumeratorLinkedList : IEnumerator<Node>
{
    private Node current;
    private Node first;
    private bool didWeMove;

    public EnumeratorSpojovySeznam(Node current)
    {
        this.current = current;
        this.first = current;
        didWeMove = false;
    }

    public Node Current => current;

    object System.Collections.IEnumerator.Current => Current;

    public bool MoveNext()
    {
        if ((didWeMove == true && current == first)) return false;
        current = current.Next;
        didWeMove = true;
        return true;
    }

    public void Dispose()
    {
    }

    public void Reset()
    {
        throw new NotImplementedException();
    }
}
4

1 に答える 1