迭代器是.net 2.0中的新增内容
他支持foreach方式 ,但不用实现接口IEnumerable
如果直接用类名来实现迭代 要用System.Collections.IEnumerator返回类型的迭代器
如果用自定义的名字 要实现System.Collections.IEnumerable类型的迭代器
下面举一个例子
using System;
using System.Collections.Generic;
using System.Text;
namespace iteretorExample
{
class Program
{
static void Main(string[] args)
{
SampleCollection sc = new SampleCollection();
foreach (int i in sc)
{
Console.WriteLine(i);
}
foreach (int i in sc.GetVal())
{
Console.WriteLine(i);
}
foreach (int i in sc.GetVal(2, 4))
{
Console.WriteLine(i);
}
Console.Read();
}
}
class SampleCollection
{
int[] items;
public SampleCollection()
{
items=new int[5] {1,2,3,4,5};
}
//使用此迭代器可以匿名调用
public System.Collections.IEnumerator GetEnumerator()
{
for (int i = 0; i < items.Length; i++)
{
yield return items[i];
}
}
//使用此迭代器必须用名字显示调用
public System.Collections.IEnumerable GetVal()
{
for (int i = 0; i < items.Length; i++)
{
yield return items[i];
}
}
//使用此迭代器可以指定迭代的范围
public System.Collections.IEnumerable GetVal(int start, int end)
{
for (int i = start; i <= end; i++)
{
yield return items[i];
}
}
}
}