[C#] C# IEnumerable 接口使用范例 →→→→→进入此内容的聊天室

来自 , 2020-12-21, 写在 C#, 查看 161 次.
URL http://www.code666.cn/view/2287c6b8
  1. using System;
  2. using System.Collections;
  3.  
  4. public class Person
  5. {
  6.     public Person(string fName, string lName)
  7.     {
  8.         this.firstName = fName;
  9.         this.lastName = lName;
  10.     }
  11.  
  12.     public string firstName;
  13.     public string lastName;
  14. }
  15.  
  16. public class People : IEnumerable
  17. {
  18.     private Person[] _people;
  19.     public People(Person[] pArray)
  20.     {
  21.         _people = new Person[pArray.Length];
  22.  
  23.         for (int i = 0; i < pArray.Length; i++)
  24.         {
  25.             _people[i] = pArray[i];
  26.         }
  27.     }
  28.  
  29.     IEnumerator IEnumerable.GetEnumerator()
  30.     {
  31.        return (IEnumerator) GetEnumerator();
  32.     }
  33.  
  34.     public PeopleEnum GetEnumerator()
  35.     {
  36.         return new PeopleEnum(_people);
  37.     }
  38. }
  39.  
  40. public class PeopleEnum : IEnumerator
  41. {
  42.     public Person[] _people;
  43.  
  44.     // Enumerators are positioned before the first element
  45.     // until the first MoveNext() call.
  46.     int position = -1;
  47.  
  48.     public PeopleEnum(Person[] list)
  49.     {
  50.         _people = list;
  51.     }
  52.  
  53.     public bool MoveNext()
  54.     {
  55.         position++;
  56.         return (position < _people.Length);
  57.     }
  58.  
  59.     public void Reset()
  60.     {
  61.         position = -1;
  62.     }
  63.  
  64.     object IEnumerator.Current
  65.     {
  66.         get
  67.         {
  68.             return Current;
  69.         }
  70.     }
  71.  
  72.     public Person Current
  73.     {
  74.         get
  75.         {
  76.             try
  77.             {
  78.                 return _people[position];
  79.             }
  80.             catch (IndexOutOfRangeException)
  81.             {
  82.                 throw new InvalidOperationException();
  83.             }
  84.         }
  85.     }
  86. }
  87.  
  88. class App
  89. {
  90.     static void Main()
  91.     {
  92.         Person[] peopleArray = new Person[3]
  93.         {
  94.             new Person("John", "Smith"),
  95.             new Person("Jim", "Johnson"),
  96.             new Person("Sue", "Rabon"),
  97.         };
  98.  
  99.         People peopleList = new People(peopleArray);
  100.         foreach (Person p in peopleList)
  101.             Console.WriteLine(p.firstName + " " + p.lastName);
  102.  
  103.     }
  104. }
  105.  
  106. /* This code produces output similar to the following:
  107.  *
  108.  * John Smith
  109.  * Jim Johnson
  110.  * Sue Rabon
  111.  *
  112.  */
  113.  
  114. //csharp/6269

回复 "C# IEnumerable 接口使用范例"

这儿你可以回复上面这条便签

captcha