对象集合的迭代:IEnumerable,IEnumerator接口

来源:互联网 发布:js限制input输入长度 编辑:程序博客网 时间:2024/04/29 20:19

 public class Person:IEnumerable
   {
       public string Name;
       public int Age;
       public Person(string name, int age)
       {
           Name = name;
           Age = age;
       }

       private Person[] Per;
       public Person(Person[] per)
       {
           Per = new Person[per.Length];
           for (int i = 0; i < per.Length; i++)
           {
               Per[i] = per[i];
           }
       }

     public  IEnumerator GetEnumerator()
       {
           return new PersonEnum(Per);
       }
     
   }


   #region
   public class PersonEnum : IEnumerator
   {
       public Person[] _per;
       int postion = -1;
       public PersonEnum(Person[] list)
       {
           _per = list;
       }
       public bool MoveNext()
       {
           postion++;
           return (postion < _per.Length);
       }
       public void Reset()
       {
           postion = -1;
       }
       public object Current
       {
           get
           {
               try
               {
                   return _per[postion];
               }
               catch(IndexOutOfRangeException)
               {
                   throw new InvalidOperationException();
               }
           }
       }
   }
   #endregion

 

 static void Main(string[] args)
        {

      Person[] per = new Person[2];
            per[0] = new Person("a", 1);
            per[1] = new Person("b", 2);
            Person list = new Person(per);
            foreach (Person p in list)
            {
                Console.WriteLine(p.Name);
            }

  }

原创粉丝点击