IEnumerable接口的实现

对象要实现可以迭代需IEnumerable接口并实现GetEnumerator方法。一下简单例子

    public class SPEnumerable<T> : IEnumerable
    {
        private T[] array;

        public SPEnumerable()
        {
            array = new T[0];
        }

        public void Add(T item)
        {
            Array.Resize<T>(ref array, array.Length + 1);
            array[array.Length - 1] = item;
        }

        #region IEnumerable 成员

        IEnumerator IEnumerable.GetEnumerator()
        {
            foreach (T item in array)
            {
                yield return item;
            }
        }

        #endregion
    }

 

当然也可以自己去实现IEnumerator接口

    public class SPEnumerable<T> : IEnumerable
    {
        private T[] array;

        public SPEnumerable()
        {
            array = new T[0];
        }

        public void Add(T item)
        {
            Array.Resize<T>(ref array, array.Length + 1);
            array[array.Length - 1] = item;
        }

        #region IEnumerable 成员

        IEnumerator IEnumerable.GetEnumerator()
        {
            return new SPEnumerator<T>(array);
        }

        #endregion
    }

    public class SPEnumerator<T> : IEnumerator
    {
        private int position = -1;
        private T[] array;

        public SPEnumerator(T[] array)
        {
            this.array = array;
        }

        #region IEnumerator 成员

        public object Current
        {
            get 
            { 
                return array[position];
            }
        }

        public bool MoveNext()
        {
            position++;
            return position < array.Length;
        }

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

        #endregion
    }

 

转载于:https://www.cnblogs.com/xingbinggong/p/3598963.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值