实现枚举接口的IEnumerator接口和IEnumerable 的问题
using System;
using System.Collections;
    class Program
    {
        static void Main(string[] args)
        {
            ImplementIE myImplementIE = new ImplementIE();
            foreach (int i in myImplementIE)
            {
                Console.Write(i + "\t");
            }
            IEnumerator myIEnumerator = myImplementIE.GetEnumerator();
            while (myIEnumerator.MoveNext())
            {
                int i = (int)myIEnumerator.Current;
                Console.Write(i + "\t");
            }
            Console.ReadLine();
        }
    }
public class ImplementIE : IEnumerable
{
    int[] myInt = new int[32];
    int currentindex = -1;
    public ImplementIE()
    {
        for (int i = 0; i < 32; i++)
        {
            myInt[i] = i * 10;
        }
    }
    public IEnumerator GetEnumerator()
    {
        ClsIEnumerator myClsIEnumerator = new ClsIEnumerator(this);
        return myClsIEnumerator;
    }
    class ClsIEnumerator : IEnumerator
    {
        ImplementIE myImplementIE;
        public ClsIEnumerator(ImplementIE myImplementIE)
        {
            this.myImplementIE = myImplementIE;
        }
        public object Current
        {
            get
            {
                return myImplementIE.myInt[myImplementIE.currentindex];
            }
        }
        public void Reset()
        {
            myImplementIE.currentindex = -1;        }
        public bool MoveNext()
        {
            myImplementIE.currentindex++;
            if (myImplementIE.currentindex >= myImplementIE.myInt.Length)
                return false;
            else
                return true;
        }
    }
}
问题如下:
 1:  
  public IEnumerator GetEnumerator()
    {
        ClsIEnumerator myClsIEnumerator = new ClsIEnumerator(this);
        return myClsIEnumerator;
    }
接口IEnumerable定义方法GetEnumerator,此方法返回一个实现IEnumerator接口的类 
public IEnumerator GetEnumerator() 在这个方法定义中 IEnumerator 是什么意思 返回值类型?但是它是接口名称
2:        ImplementIE myImplementIE;
        public ClsIEnumerator(ImplementIE myImplementIE)
        {
            this.myImplementIE = myImplementIE;
        }
这是一个类的嵌套嘛?
3:为什么在这个类中 class ClsIEnumerator : IEnumerator 操作的是public class ImplementIE : IEnumerable类对象
IEnumerator接口通常由实现接口IEnumerable的类取得,接口IEnumerable定义方法GetEnumerator,此方法返回一个实现IEnumerator接口的类,
实现IEnumerator接口的类通常以嵌套类的形式存在于实现接口IEnumerable的类内部。
这句话如何理解?