publicclassPerson{privatestring _name;privateint _age;publicPerson(string name,int age){this._name = name;this._age = age;}publicstring Name
{get{returnthis._name;}set{this._name =value;}}publicint Age
{get{returnthis._age;}set{this._age =value;}}}
publicclassPersonCollection:IEnumerable, IEnumerator
{private Person[] _collection;publicPersonCollection(Person[] collection){
_collection =newPerson[collection.Length];for(int i =0; i < collection.Length; i++)
_collection[i]= collection[i];}//IEnumerable实现部分publicIEnumeratorGetEnumerator(){return(IEnumerator)this;}//IEnumerator实现部分privateint position =-1;publicboolMoveNext(){
position++;return(position < _collection.Length);}publicvoidReset(){
position =-1;}publicobject Current
{get{try{return _collection[position];}catch(IndexOutOfRangeException){thrownewInvalidOperationException();}}}}
Person[] list =newPerson[]{newPerson("张三",20),newPerson("李四",21),newPerson("王五",22)};PersonCollection collect =newPersonCollection(list);foreach(Person person in collect)
MessageBox.Show(person.Name +","+ person.Age);