C# 自己实现IEnumerable

最近学习 Linq 发现返回的大多是 IEnumerable<T> ,为了 研究下 迭代类 尝试着自己 写 


 internal class People : IEnumerable
    {
        private Person[] persons;
        public People(params Person[] persons)
        {
            this.persons = persons;
        }

        #region IEnumerable 成员

        public IEnumerator GetEnumerator()
        {
            return new InnerPeople(this.persons);
        }

        #endregion

        class InnerPeople:IEnumerator
        {
            private Person[] persons ;

            private int index = -1;

            public InnerPeople()
            {
            }

            public InnerPeople(params Person[] persons)
            {
                this.persons = persons;
            }

            #region IEnumerator 成员

            public object Current
            {
                get 
                {
                    try
                    {
                        return persons[index];
                    }
                    catch(IndexOutOfRangeException e)
                    {
                        throw e;
                    }
                }
            }

            public bool MoveNext()
            {
                index++;

                return index < persons.Length;
            
            }

            public void Reset()
            {
                this.index = -1; ;
            }

            #endregion
        }

        
    }
     
    class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public override string ToString()
        {
            return ID + ";" + Name;
        }
    }

测试下吧:


 static void Main(string[] args)
 {


            Person[] persons = new Person[3]{new Person{ID=1,Name="SB"},new Person{ID=2,Name="BS"},new Person{ID=3,Name="Mike"} };
            People people = new People(persons);


            foreach (Person p in people)
            {
                Console.WriteLine(p.ToString());
            }
            
            Console.ReadKey();

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值