下面是例子:using System;
using System.Collections.Generic;
using System.Text;namespace Iterator_GenreicsSample1
{
    public class Stack<T>: IEnumerable<T>
    {
        T[] Items;
        int count;
        
        public void push(T value)
        {
            if (Items == null)
            {
                Items = new T[4];
            }
            else if (Items.Length == count)
            {
                T[] newItems = new T[count * 2];
                Array.Copy(Items, 0, newItems, 0, count);
                Items = newItems;
            }
            Items[count++] = item;        }
        
        public T pop()
        {
            T value = Items[count - 1];
            count--;
        }        public IEnumerator<T> GetEnumerator() 
        {
            for (int i = count - 1; i >= 0;--i )
            {
                yield return Items[i];
            }
        }
        public IEnumerable<T> PoptoBottom
        {
           get{
                return this;
           }
        }        public IEnumerable<T> BottomtoPop
        {
            get{
                for(int i=0;i<count;i++)
                    yield return Items[i];
            }
        }
    }
    class mytest
    {
        static void Main(string[] args)
        {
            Stack<int> myStack = new Stack<int>();
            for (int i = 0; i < 10; i++) myStack.push(i);
            foreach (int value in myStack.PoptoBottom) Console.Write("-- {0} ", value);
            Console.WriteLine();
            foreach (int value in myStack.BottomtoPop) Console.Write("-- {0} ", value);
            Console.WriteLine();
            Console.Read();
        }
    }
}
在2005编译时总是提示Stack类的方法
“GetEnumerator”有以下错误:
'Iterator_GenreicsSample1.Stack<T>' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'. 'Iterator_GenreicsSample1.Stack<T>.GetEnumerator()' is either static, not public, or has the wrong return type. 我怀疑是第三种错误,即返回类型不正确,但不知道怎么修改,郁闷啊!请高手帮忙指点,谢谢!

解决方案 »

  1.   

    在你的类中加上public IEnumerator IEnumerable.GetEnumerator()
    {
      return GetEnumerator();
    }
      

  2.   

    IEnumerable<T>继承于IEnumerablepublic Sysetm.Collections.IEnumerable.IEnumerator Sysetm.Collections.IEnumerable.GetEnumerator()
    {
      return GetEnumerator();
    }
      

  3.   

    汗……public Sysetm.Collections.IEnumerator Sysetm.Collections.IEnumerable.GetEnumerator()
    {
      return GetEnumerator();
    }
      

  4.   

    Ivony,您好!
    为什么要这样写啊,
    另外,在类中加上了这样的方法,但还是不成功,提示public Sysetm.Collections.IEnumerator Sysetm.Collections.IEnumerable.GetEnumerator()中类型public不合法.郁闷了,还请你再解释解释,谢谢!
      

  5.   

    public Sysetm.Collections.IEnumerator Sysetm.Collections.IEnumerable.GetEnumerator()
    去掉“public”就可以了,
    搞定,谢谢了:)
      

  6.   

    因为IEnumerable<T>继承于IEnumerable,所以你必须还实现IEnumerable,但是已经有一个GetEnumerator方法了,所以必须要显示实现接口。