c#怎么让自己封装集合类可以用forearch循环
复习了一下怎么封装可以用foreach来循环的集合类。代码如下
class E
{
static void Main(string[] args)
{
ArrayDemo arr = new ArrayDemo();
foreach (var item in arr)
{
Console.Write(item + "--");
}
Console.ReadLine();
}
}
//需要迭代的类,需要继承迭代器接口IEnumerable
class ArrayDemo :IEnumerable
{
int[] arrInt = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
public IEnumerator GetEnumerator()
{
return new Enumerator(arrInt);
}
}
//迭代器的处理类
class Enumerator : IEnumerator
{
int[] arr; //接收迭代类的数组
int index = -1; //当前迭代数的坐标
public Enumerator(int[] arr)
{
this.arr = arr;
}
//MoveNext返回true则返回集合中的元素
public object Current
{
get
{
return arr[index];
}
}
//如果还可以进行迭代就返回true
public bool MoveNext()
{
index++;
if (index < arr.Length)
{
return true;
}
return false;
}
public void Reset()
{
}
}