最近学习 Linq 发现返回的大多是 IEnumerable<T> ,为了 研究下 迭代类 尝试着自己 写
internal class People : IEnumerable
{
private Person[] persons;
public People(params Person[] persons)
{
this.persons = persons;
}
#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
return new InnerPeople(this.persons);
}
#endregion
class InnerPeople:IEnumerator
{
private Person[] persons ;
private int index = -1;
public InnerPeople()
{
}
public InnerPeople(params Person[] persons)
{
this.persons = persons;
}
#region IEnumerator 成员
public object Current
{
get
{
try
{
return persons[index];
}
catch(IndexOutOfRangeException e)
{
throw e;
}
}
}
public bool MoveNext()
{
index++;
return index < persons.Length;
}
public void Reset()
{
this.index = -1; ;
}
#endregion
}
}
class Person
{
public int ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return ID + ";" + Name;
}
}
测试下吧:
static void Main(string[] args)
{
Person[] persons = new Person[3]{new Person{ID=1,Name="SB"},new Person{ID=2,Name="BS"},new Person{ID=3,Name="Mike"} };
People people = new People(persons);
foreach (Person p in people)
{
Console.WriteLine(p.ToString());
}
Console.ReadKey();
}