在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace IEnumeratorSample { class Person : IEnumerable //派生自IEnumerable,同样定义一个Personl类 { public string Name; public string Age; public Person(string name, string age) { Name = name; Age = age; } private Person[] per; public Person(Person[] array)//重载构造函数,迭代对象,用一个数组来存放Person的集合,在后面用foreach来访问,但是仍然要实现GetEnumerator() { per = new Person[array.Length]; for (int i = 0; i < array.Length; i++) { per[i] = array[i]; } } public IEnumerator GetEnumerator()//实现GetEnumerator()接口 { return new PersonEnum(per);//在这里调用PersonEnum } } class PersonEnum : IEnumerator //实现foreach语句内部,并派生 { public Person[] _per; int position = -1; public PersonEnum(Person[] list) { _per = list; } public bool MoveNext() { position++; return (position < _per.Length); } public void Reset() { position = -1; } public object Current { get { try { return _per[position]; } catch (IndexOutOfRangeException) { throw new InvalidOperationException(); } } } } class Program { static void Main(string[] args) { Person[] per = new Person[2] //同样初始化并定义2个Person对象 { new Person("guojing","21"), new Person("muqing","21"), }; Person personlist = new Person(per); //初始化对象集合 foreach (Person p in personlist) //使用foreach语句 Console.WriteLine("Name is " + p.Name + " and Age is " + p.Age); Console.ReadKey(); } } } |
请发表评论