私は次のようなコードを持っています:
class T : IEnumerable, IEnumerator
{
private int position = -1;
public T() { }
public IEnumerator GetEnumerator() { return this; }
public object Current { get { return position; } }
public bool MoveNext()
{
position++;
return (position < 5);
}
public void Reset() { position = -1; }
}
//Using in code:
T t = new T();
foreach (int i in t)
//to do something
上記のコードではすべてが正常に機能していますが、次に使用する場合:
foreach (int i in t)
if (i == 2)
foreach (int p in t)
//print p
else
//print i
それは(括弧内の2番目のループで)出力します:0 1(0 1 2 3 4)の代わりに0 1(3 4)2 3 4私はリストとコレクションでそれをテストしました、そして彼らはそれを正しく行います。どうすれば必要なものを達成できますか?