class _4_Iterator
{
[Test]
public void Test1()
{
Apple obj = new Apple();
foreach (var item in obj)
Console.WriteLine(item);
}
[Test]
public void Test2()
{
Pear obj = new Pear();
foreach (var item in obj)
Console.WriteLine(item);
Console.WriteLine(111);
}
public void Test3()
{
List<int> list = new List<int>();
}
}
class Apple : IEnumerable
{
IList<int> _list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
public IEnumerator GetEnumerator()
{
//return _list.GetEnumerator();
for (int i = 0; i < _list.Count; i++)
yield return _list[i];
}
}
class Pear
{
IList<int> _list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
//public IEnumerator GetEnumerator()
//{
// //return new AppleEnumerator(_list);
// for (int i = 0; i < _list.Count; i++)
// yield return _list[i];
//}
public IEnumerator GetEnumerator()
{
return new AppleEnumerator(_list);
}
}
class AppleEnumerator : IEnumerator
{
IList<int> _list;
int current =-1;
public AppleEnumerator(IList<int> list)
{
_list = list;
}
public object Current
{
get
{
return _list[current];
}
}
public bool MoveNext()
{
if (current!= _list.Count)
{
current++;
}
return current<_list.Count;
}
public void Reset()
{
current = -1;
}
}