• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[C#]实现IEnumerable接口来使用foreach语句的一个实例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

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();
        }
    }
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#程序设计笔记(第五章)发布时间:2022-07-10
下一篇:
利用C#编写一个简单的抓网页应用程序发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap