{
private string _name;
private int _age;
public Person(string name, int age)
{
this._name = name;
this._age = age;
}
public string Name
{
get { return this._name; }
set { this._name = value; }
}
public int Age
{
get { return this._age; }
set { this._age = value; }
}
}
public class PersonCollection : IEnumerable, IEnumerator
{
private Person[] _collection;
public PersonCollection(Person[] collection)
{
_collection = new Person[collection.Length];
for (int i = 0; i < collection.Length; i++)
_collection[i] = collection[i];
}
//IEnumerable实现部分
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
//IEnumerator实现部分
private int position = -1;
public bool MoveNext()
{
position++;
return (position < _collection.Length);
}
public void Reset()
{
position = -1;
}
public object Current
{
get
{
try
{
return _collection[position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
}
//示例代码
Person[] list = new Person[]{
new Person("张三",20),
new Person("李四",21),
new Person("王五",22)
};
PersonCollection collect = new PersonCollection(list);
foreach (Person person in collect)
MessageBox.Show(person.Name + "," + person.Age);