私の問題は基本的に、呼び出された関数/プロパティの順序です。カスタム リンク リスト、循環リストがあります。そこで、カスタム列挙子とすべてを作成しました。問題は、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();
}
}