class _4_Iterator
    {
        [Test]
        public void Test1()
        {
            Apple obj = new Apple();
            foreach (var item in obj)
                Console.WriteLine(item);
        }
        [Test]
        public void Test2()
        {
            Pear obj = new Pear();
            foreach (var item in obj)
                Console.WriteLine(item);
            Console.WriteLine(111);

            
        }
        public void Test3()
        {
            List<int> list = new List<int>();
        }
    }
    class Apple : IEnumerable
    {
        IList<int> _list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
        public IEnumerator GetEnumerator()
        {
            //return _list.GetEnumerator();
            for (int i = 0; i < _list.Count; i++)
                yield return _list[i];
        }
    }
    class Pear
    {
        IList<int> _list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
        //public IEnumerator GetEnumerator()
        //{
        //    //return new AppleEnumerator(_list);
        //    for (int i = 0; i < _list.Count; i++)
        //        yield return _list[i];
        //}
        public IEnumerator GetEnumerator()
        {
            return new AppleEnumerator(_list);
        }
    }
    class AppleEnumerator : IEnumerator
    {
        IList<int> _list;
        int current =-1;
        public AppleEnumerator(IList<int> list)
        {
            _list = list;
        }
        public object Current
        {
            get
            {
                return _list[current];
            }
        }

        public bool MoveNext()
        {
            if (current!= _list.Count)
            {
                current++;
            }
            return current<_list.Count;
        }

        public void Reset()
        {
            current = -1;
        }
    }

  

posted on 2021-12-16 15:37  梅桦  阅读(90)  评论(0编辑  收藏  举报