- using System;
- using System.Collections;
- public class Person
- {
- public Person(string fName, string lName)
- {
- this.firstName = fName;
- this.lastName = lName;
- }
- public string firstName;
- public string lastName;
- }
- public class People : IEnumerable
- {
- private Person[] _people;
- public People(Person[] pArray)
- {
- _people = new Person[pArray.Length];
- for (int i = 0; i < pArray.Length; i++)
- {
- _people[i] = pArray[i];
- }
- }
- public IEnumerator GetEnumerator()
- {
- return new PeopleEnum(_people);
- }
- }
- public class PeopleEnum : IEnumerator
- {
- public Person[] _people;
- // Enumerators are positioned before the first element
- // until the first MoveNext() call.
- int position = -1;
- public PeopleEnum(Person[] list)
- {
- _people = list;
- }
- public bool MoveNext()
- {
- position++;
- return (position < _people.Length);
- }
- public void Reset()
- {
- position = -1;
- }
- public object Current
- {
- get
- {
- try
- {
- return _people[position];
- }
- catch (IndexOutOfRangeException)
- {
- throw new InvalidOperationException();
- }
- }
- }
- }
- class App
- {
- static void Main()
- {
- Person[] peopleArray = new Person[3]
- {
- new Person("John", "Smith"),
- new Person("Jim", "Johnson"),
- new Person("Sue", "Rabon"),
- };
- People peopleList = new People(peopleArray);
- foreach (Person p in peopleList)
- Console.WriteLine(p.firstName + " " + p.lastName);
- }
- }
- /* This code produces output similar to the following:
- *
- * John Smith
- * Jim Johnson
- * Sue Rabon
- *
- */
IEnumerable接口
最新推荐文章于 2022-04-27 19:32:20 发布