对象要实现可以迭代需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
    }

 

相关文章:

  • 2021-07-28
  • 2022-01-13
  • 2021-10-25
  • 2021-05-24
  • 2021-09-23
  • 2021-08-23
猜你喜欢
  • 2021-08-02
  • 2022-12-23
  • 2021-09-14
  • 2021-08-20
  • 2021-10-06
相关资源
相似解决方案