IEnumerable接口

=================================================简单的实现IEnumerable接口

目前创新互联建站已为成百上千家的企业提供了网站建设、域名、虚拟主机绵阳服务器托管、企业网站设计、乐亭网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

------------------------------------Person.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication6
{
    public class Person
    {
        public string Name { get; set; }
    }
}

------------------------------------PerAll.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication6
{
    public class PerAll:IEnumerable
    {
        Person[] p = new Person[3];//实例化长度为三个的数组
        public PerAll()//构造函数初始化数组
        {
            p[0] = new Person { Name = "张三" };
            p[1] = new Person { Name = "李四" };
            p[2] = new Person { Name = "王五" };
        }
        public IEnumerator GetEnumerator()//迭代器
        {
            return p.GetEnumerator();//直接调用数组自带的的GetEnumerator。(简单委托请求到System.Array)
        }
    }
}

------------------------------------主程序

            PerAll p = new PerAll();//实例化对象
            //-------------------第一种方式遍历
            foreach (Person  item in p)
            {
                Console.WriteLine(item.Name);
            }
            //-------------------第二中方式遍历
            IEnumerator ie = p.GetEnumerator();
            while (ie.MoveNext())
            {
                Console.WriteLine((ie.Current as Person).Name);
            } 
            
            
            
            //普通数组遍历
            string[] str = new string[3] { "张辽", "张合", "张飞" };
            IEnumerator strie = str.GetEnumerator();
            while (strie.MoveNext())
            {
                Console.WriteLine(strie.Current as string);
            }

 


文章名称:IEnumerable接口
文章来源:http://pwwzsj.com/article/jjejdp.html